そして、Wordで文書を作成するうえで、覚えておくと便利なのが、Wordマクロです。
Wordマクロは非常に便利なので、いったん習得すると、手放せなくなります。
では、そのWordマクロを覚えるには、どうすればよいでしょうか。
Wordマクロを習得するのに最も有効、確実な方法は、Excelマクロ習得と思われます。
というのは、Wordマクロに関する情報は少ないのに対して、Excelマクロに関する情報は実にたくさん出回っているからです。そして、WordマクロもExcelマクロも、VBA(Visual Basic for Applications)という同一のプログラミング言語を使います。
WordマクロもExcelマクロも、マクロコードの記述はほぼ共通しています。WordとExcelとで、一部、独自のオブジェクトが存在しているに過ぎません。Excelマクロを書くことができるようになれば、Wordマクロも書くことができるようになるのです。
私も、例に漏れず、まずExcelマクロを覚え、自然とWordマクロも使えるようになっていました。
ただし、Wordマクロのコードを書いていく上で、Wordの分野に独特なのが
Rangeオブジェクト
です。
Excelマクロで、Rangeとは、セルやセル範囲です。
対して、WordマクロでRangeとは、文書中の「連続する領域」のことです。
「Range」というオブジェクト名は同じですが、ExcelとWordとでは、全く別物です。
Wordマクロのヘルプには、次のように解説されています。
文書でブックマークを使用する場合と同様に、Visual Basic のプロシージャでは文書の特定の部分を指定するときに Range オブジェクトを使用します。ただし、ブックマークとは異なり、Range オブジェクトを定義するプロシージャの実行中のみ、オブジェクトが存在します。Range オブジェクトは選択範囲から独立しています。つまり、選択範囲を変更しなくてもオブジェクトを定義し操作できます。
Wordマクロを覚える上で最初のうちは、Rangeが少々扱いにくいと感じてしまいます。
Wordマクロの利用法の一例が、
1 文書テンプレートを用意しておく
2 テンプレート中に、ブックマークを設定しておく
3 そのブックマークの位置に、マクロでデータを挿入する
というものです。
その具体例は、
⇒ こちらをご覧ください。
この利用法のように、ブックマーク位置にデータを挿入するコードは、次のような記述になります。
ThisDocument.BookMarks("氏名").Range.InsertAfter myShimei
* myShimei は、文字列型の変数で、この変数にテキストを代入しておきます。
Excelマクロ流でいくと、
BookMarks("氏名").InsertAfter myShimei
と、つい書いてしまいます。
BookMarks("氏名")の位置に、myShimeiをインサートする、これでよさそうに思うからです。
しかし、これでは、コンパイルエラーが出ます。
Rangeの記述がないためです。
BookMarks("氏名").Range.InsertAfter myShimei
と、Rangeを記述する必要があるのです。
考え方としては、「氏名」という名称のブックマークオブジェクトの領域(Range)に、変数myShimeiに格納されたデータを、挿入(InsertAfter)する、
こういうことなのでしょう。
最初のうちは、つい、Rangeの記述を落としてしまいがちですが、これも慣れですね。
経験を重ねると、正確に書けるようになります。
以上のように、Wordマクロの習得には、Excelマクロから入るのがよいでしょう。。
Excelマクロ関係の情報は、書籍にしろ、Webサイト情報にしろ、満ち溢れていますから、困ることはありません。
できる大事典 Excel VBA 2016/2013/2010/2007 対応 (できる大事典シリーズ) | |
国本温子,緑川吉行,できるシリーズ編集部 | |
インプレス |
Excel VBA逆引き辞典パーフェクト 第3版 | |
田中 亨 | |
翔泳社 |
それでは、また次の記事で。