Wordのマクロでインデントを操作する
2010 年 2 月 4 日
コメントはありません
次のコードはマイクロソフトWordのマクロ(VBA)で文書内のすべての段落のインデントを10ポイントにする例である。
Sub インデントテスト()
For i = 1 To ActiveDocument.Paragraphs.Count
a = ActiveDocument.Paragraphs(i)
ActiveDocument.Paragraphs(i).Range.Select
With Selection.ParagraphFormat
.LeftIndent = 10
.FirstLineIndent = 0
End With
Next i
End Sub
For i = 1 To ActiveDocument.Paragraphs.Count
a = ActiveDocument.Paragraphs(i)
ActiveDocument.Paragraphs(i).Range.Select
With Selection.ParagraphFormat
.LeftIndent = 10
.FirstLineIndent = 0
End With
Next i
End Sub
段落の数を数え、それぞれの段落についてインデントを設定する。
LeftIndentにポイント数を入れ、左インデントを設定する。
FirstLineIndentは最初の行の左インデントを設定するためのもので、字下げやぶら下げをしない場合は「0」とする。
字下げやぶら下げをする場合は段落ダイアログを使う場合と違う挙動をするので注意を要する。
字下げをする場合は
LeftIndent = 10
FirstLineIndent = 10
FirstLineIndent = 10
とする。この場合、段落全体のインデントは10ポイントで、最初の行のインデントは20ポイントになる。
□□日本国民は、正当に選挙された国会におけ □る代表者を通じて行動し、われらとわれらの □子孫のために、
ぶら下げをする場合は
LeftIndent = 10
FirstLineIndent = -10
FirstLineIndent = -10
とする。この場合、最初の行のインデントは0ポイントで、二行目以降のインデントは10ポイントとなる。
つまり「LeftIndent」は二行目以降のインデントを表し、「FirstLineIndent」は最初の行のインデントと二行目以降とのインデントの差を表す。ぶら下げをする場合は、最初の行を「字上げ」すると考えると分かりやすい。
日本国民は、正当に選挙された国会における代 □表者を通じて行動し、われらとわれらの子孫 □のために、
実は、これだけならば、特にマクロを使う必要はない。
コードの3行目の「a = ActiveDocument.Paragraphs(i)」の部分を使えば、文字列の内容を判断してインデントの処理を振り分ける、というような使い方ができる。
なお、ここでは、インデントを直にセットする方法を書いたが、スタイルを使う方法もある。




















最近のコメント