文書内に、枠線透明の罫線(表)を配置しておき、その中に、データを順次挿入していくマクロです。
挿入するデータの数がどんなに多くても、マクロが自動で処理してくれます。
詳しくは、
⇒ 昨日の記事をご覧ください。
VBAマクロのコードは、次のとおりです。
Sub Macro1()
Dim i As Integer
For i = 1 To 9
With Documents("Hoge.docx").Paragraphs(i).Range
ThisDocument.Tables(1).Range.Text = _
Left(.Text, Len(.Text) - 1)
ThisDocument.PrintOut
End With
Next i
End Sub
Excelマクロを扱える方なら、このコードの中味は理解できるはずです。Wordマクロも、Excelマクロと大きな違いはありません。WordもExcelも、どちらのマクロも、同じVBAで記述するからコードの中味はほぼ共通です。

ここで、Wordマクロの普及のためにも、上記VBAコードの中味を少しだけ、私流に解説しておきます。
【1】 Documents("Hoge.docx")
これは、「Hoge.docx」というファイル名のWord文書のことです。
Documents は、Word で現在開いているすべての Document オブジェクトのコレクションです。Documents("Hoge.docx") と記述することによって、現在開いているWord文書の中で、「Hoge.docx」という特定の文書を指し示しています。
このマクロの使用に当たっては、「Hoge.docx」というファイルを開いておく必要があります。
【2】 Paragraphs(i)
Paragraphs は、段落 Paragraph オブジェクトのコレクションです。Paragraphs(i)とすることで、コレクション(複数の段落)の中から、単体のParagraph(段落)オブジェクトを取得します。「i」は、整数型の変数で、この変数には、「1~9」の整数が入ります。
ですから、これによって、1番目の段落から9番目の段落が取得されます。
【3】 Left
「Left」は、文字列の左から指定された文字数分の文字列を返す関数です。
「Left(文字列式,文字数)」 という構文になります。文字列式には、取り出し元となる文字列を指定し、文字数には、取り出す文字列の文字数を指定します。
【4】 Len
「Len」は、指定した文字列の長さ(文字数)を返す関数です。
【5】 Left(.Text, Len(.Text) - 1)
これは、Left 関数を使うことによって、各段落の文字列から、最後尾の1文字だけを取り除いた文字列が返されています。
各段落の「最後尾の1文字」とは、段落記号(改行マーク)のことです。文書内にデータを挿入するに当たって、段落記号は不要なので、取り除いているわけです。この記述は、Wordマクロにおいては、よくお目にかかる定番のコードです。
不十分なところもあるかもしれませんが、解説は、以上となります。
Excelマクロは非常に普及していて、多く利用されているのに、Wordマクロの普及度は芳しくありません。Excelマクロとほぼ共通のコードなので、ぜひ、Wordマクロも使ってみてください。
それでは、また次の記事で
■■■■ goosyun ■■■■