Wordのマクロでインデントを操作する方法
次のコードはマイクロソフトWordのマクロ(VBA)で文書内のすべての段落のインデントを10ポイントにする例である。
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」とする。
字下げやぶら下げをする場合は段落ダイアログを使う場合と違う挙動をするので注意を要する。
字下げをする場合は
FirstLineIndent = 10
とする。この場合、段落全体のインデントは10ポイントで、最初の行のインデントは20ポイントになる。
□□日本国民は、正当に選挙された国会におけ □る代表者を通じて行動し、われらとわれらの □子孫のために、
ぶら下げをする場合は
FirstLineIndent = -10
とする。この場合、最初の行のインデントは0ポイントで、二行目以降のインデントは10ポイントとなる。
つまり「LeftIndent」は二行目以降のインデントを表し、「FirstLineIndent」は最初の行のインデントと二行目以降とのインデントの差を表す。ぶら下げをする場合は、最初の行を「字上げ」すると考えると分かりやすい。
日本国民は、正当に選挙された国会における代 □表者を通じて行動し、われらとわれらの子孫 □のために、
実は、これだけならば、特にマクロを使う必要はない。
コードの3行目の「a = ActiveDocument.Paragraphs(i)」の部分を使えば、文字列の内容を判断してインデントの処理を振り分ける、というような使い方ができる。
なお、ここでは、インデントを直にセットする方法を書いたが、スタイルを使う方法もある。
[ 2010年2月4日 | カテゴリー: Word | タグ: VBA , インデント ]
« Wordのマクロで段落を操作する方法 | 暦を現代に当てはめるのは正しいか »
コメント
-
通りすがりの者です。
もう解決済みかと思いますが、たまたま私も同じ問題に遭遇し悩んでおりましたので。
私の場合は、
.CharacterUnitFirstLineIndent = 0
.FirstLineIndent = n
とすることで設定値が反映されました。
上記の処理順が逆の場合や、
CharacterUnitFirstLineIndentに0以外の値が設定されている場合はこちらが優先され、FirstLineIndentは変更できないような挙動でした。
ご参考になれば幸いです。
.FirstLineIndent = n
の効果が確認されません
0 にしても 10 にしても変更が不可能です (>_<)
このプロパティを設定するには 他の設定とかが必要なのでしょうか?
それともタイミングの問題?
どうぞご教授下さい m(_ _)m