VBAでRangeオブジェクトの場所に連番フィールドを挿入する(Word)
VBAでRangeオブジェクトの場所に連番フィールドを挿入する(Word)
ちょっとした覚書。
Fields.Addメソッドでフィールド追加
文書内にフィールドを追加するには、Fields.Add
メソッドを使う。(参考)
Fields.Add
メソッドには、引数が四つ。
Range
Type
Text
PreserveFormatting
一つ目のRange
は挿入する箇所、二つ目のType
はフィールドの種類(WdFieldType
列挙体で指定できる。)、三つ目のText
プロパティは、フィールドコード文字列のうち、フィールド名以外の部分。
ここまでは、上の「参考」のところを読んだらすぐにわかる。
四つ目のPreserveFormatting
というのがよくわからん。
知っている人がいたら教えろえてください。
丸囲み数字の連番フィールドをカーソル位置に挿入するマクロ
リスト1
Private Sub test01() Dim tgtDoc As Document Set tgtDoc = ActiveDocument Dim fld As Field Set fld = tgtDoc.Fields.Add(Range:=Selection.Range, _ Type:=wdFieldSequence, _ Text:="傍線番号 \* circlenum") End Sub
ほとんど手探りでコードを書いた。(最後、無駄に変数fld
を使っていますけど、特に意味はないです。Call tgtDoc.Fields.Add〔以下略〕
でいいです。)
連番フィールドのフィールド名は「SEQ
」なので、引数Type
にはwdFieldSequence
を指定。
Text
プロパティには、とりあえずガチでフィールドコードを書くときの「SEQ
」以外の部分を書いた。
(一般書式)スイッチ(「\*
」以下の部分。)を指定することによって、色んなタイプの連番が使えるので実によい。
スイッチについては、コチラで勉強した。実にありがたい。
実行結果
リスト1を実行すると、カーソル位置に丸数字で連番が挿入される。
それぞれ、下線部の先頭でリスト1を実行したところ。
ちなみに、引数Text
に渡した文字列の「circlenum
」を「iroha
」に変えると、
こんなふうにイロハになる。まあ素敵。(連番にカッコとか付ける方法を学ばねばならぬ。)
おわりに
フィールドコードも、面白いですね。