添字に文字列を使える連想配列で対になった情報を管理しよう

オフィスVBA
この記事は約5分で読めます。
スポンサーリンク

業務効率化したい人向けのワードマクロ初心者講座(ファイル選択フォーム, キー操作保存, 単語置換, 連想配列, テーブル情報読み込み)の第2回講座です。

 

今回は、単語変換マクロの変換対象を管理する情報を管理する変数を作成していきます。

対になった情報を管理するのには、連想配列という変数の型を使うのが便利なのですが、ワードのマクロで使っているプログラミング言語「VBA」ではそのような変数の型がありません。

そのかわり、Dictionaryという名前のオブジェクトとして連想配列が使えるので、今回はDictionaryオブジェクトを使っていきます。

スポンサーリンク

オブジェクトとは

オブジェクトというのは、日本語では「物体」なのですが、プログラミングの言葉としては、簡単に言うと「変数と処理するプログラムをひとまとめにして管理しやすくしたもの」となります。

例えば、ワード文書を操作するプログラムを作成するのにしても、「Document」オブジェクトとして、ワード文書を操作するための変数や処理がひとまとめになって用意されています。

そのため、私達ユーザーがマクロを組むとき一から全部記述しなくてもDocumentオブジェクトを利用してワード文書を操作することができます。

簡単にワード文書を開いたり、文字列を挿入して保存したりも、それぞれ1行のステートメントでできるんですよ。

Dictionary(連想配列)オブジェクトと配列の違い

VBAにはもともと配列が使えます。

たくさんのデータを一つの変数で管理するのに便利なのですが、変数の添字に数字しか使えないという制限があります。

配列の例

例えば、配列の使用例を表示します。

Henkan_Maeという名前のString型の配列に、単語変換の置換前の語句を代入しています。
変換後の語句はHenkan_Atoように別の配列を使って登録しています。バラバラの2つの変数だと、管理が少し面倒ですよね。

上のコードは、変数なしのサブルーチンとなっていますので、Module1に記述すれば、マクロとして実行することができますよ。

実行すると、MsgBoxによって下図のメッセージが表示されます。

少し、上のサンプルコードの補足説明をしておきますね。

For文は、繰り返し処理をする構文です。この場合、For から Next までのステートメントが、i に 0 ~ 2 を入れて3回 実行されます。

記事「ワードマクロ:For Nextループによる繰り返し」に詳しく解説しています。

 

MsgBoxを呼ぶときに、中括弧「(」が使われていませんが、第一回で「処理をしますか?」の問い合わせで使用したようにMsgBoxの結果を参照するときは()付きで呼び出します。

今回は表示するだけでMsgBoxの結果を使わないときは中括弧「()」なしで呼び出します。

また、& は文字列を連結する演算子、vbCrLf というのは、改行を表す文字列になってます。

連想配列の例

配列に対して、Dictionaryオブジェクトを使った連想配列の例は以下のようになります。

同じ配列の例と同様に、変換前単語と変換後単語を管理するのですが、配列の添字代わりに変換前単語をインデックスとすることで、一つの連想配列で変換前単語と変換後単語を一緒に管理することができます。

 

同様にModule1に上記のコードを記述して実行すると、先ほどと同じ様に下図のようにメッセージボックスが表示されます。

違いとしては、 CreateObject  というステートメントで連想配列を作って、変数 cnv_dic に代入しているところです。また、オブジェクトを代入するときは、 Set を使います。

で単語を追加していますが、最初の”僕”がインデックスで、”私” が配列に代入するデータとなってます。インデックスをキーと呼んでいます。

For Each Next の構文で、すべてのキーに対して処理を行っています。

今回追加するコード

今回は、マクロ本文に、変換する単語を連想配列で定義していきます。

先程の、連想配列の例 ほぼそのままですが、マクロ本文に記述していきましょう。

追加してるコードは、下図の赤枠の中です。ほぼ、「連想配列テスト」のままですよね。

ちなみに、MsgBox の文が長くなったので、2行に分けて書いています。その際に、一行目の最後に 「_」(アンダーライン) を追加する決まりになってますので、覚えておきましょう。

最後に

今回は、連想配列の説明と、連想配列で変換する単語の設定を行う部分を説明しました。

次回以降で、この「マクロ本体」の中の For Each  の中に置換処理を入れていくことで、マクロを完成させます。

次回も楽しみにしておいてください。

ワードマクロ初心者講座:

業務効率化したい人向けのワードマクロ初心者講座(ファイル選択フォーム, キー操作保存, 単語置換, 連想配列, テーブル情報読み込み)

第1回:ワードマクロでファイル選択フォームをつくろう(フォーム, ファイルダイアログの使い方)

第2回:添字に文字列を使える連想配列で対になった情報を管理しよう

第3回:キー操作の保存からマクロを作成し単語の置換処理を作ろう

第4回(最終回):ワードマクロでテーブル(表)に書いた単語変換マクロの設定を読み取ろう

この記事が気に入ったら
いいね ! しよう

コメント