フィールドコードを取得するWord VBAのコードをご紹介しています。
この方法は、あくまでも本文のフィールドコード取得を行うもので、ヘッダーやフッターに存在するフィールドコードを取得できません。
ヘッダーのフィールドコードを取得するサンプルマクロ
ヘッダー&フッターに存在するフィールドコード取得する場合、以下のWordマクロが参考になるでしょう。
Dim hdr As HeaderFooter
For Each hdr In ActiveDocument.Sections(1).Headers
Dim fld As Field
For Each fld In hdr.Range.Fields
fld.Select
Debug.Print _
fld.Code.Text; vbTab; _
fld.Result.Text; vbCrLf;
Stop
Next fld
Next hdr
End Sub
1つ目のセクションのヘッダーにフィールドが存在するWord文書がアクティブな状態で上記のマクロを実行すると、ヘッダーのフィールドが選択された状態で中断し、そのフィールドコードと結果がイミディエイトウィンドウに出力されます。
サンプルマクロで行っている処理
ヘッダーは、セクションの下位オブジェクトに該当し、既定のヘッダー・先頭ページのヘッダー・偶数ページのヘッダーの3つがあり得ます。
そこで、SectionオブジェクトのHeaderプロパティで取得できるHeadersFootersコレクションの要素であるHeaderFooterオブジェクトをFor Each~Nextループで順番に取得し、
Dim hdr As HeaderFooter For Each hdr In ActiveDocument.Sections(1).Headers
それぞれのHeaderFooterオブジェクトに含まれるFieldsコレクションの要素であるFieldオブジェクトをFor Each~Nextループで順番に取得して、
Dim fld As Field For Each fld In hdr.Range.Fields
フィールドの選択と、フィールドコードと、実行結果の出力を行い、Stopステートメントで中断しています。
fld.Select Debug.Print _ fld.Code.Text; vbTab; _ fld.Result.Text; vbCrLf; Stop
この部分の処理は本文のフィールドコード取得で行っているのと同じです。
印刷レイアウトモードで選択したい場合
印刷レイアウトモードで、ヘッダーのフィールドを取得したい、という要望もありそうです。
その場合、ヘッダーの表を選択する場合と同様、以下の処理を
With ActiveWindow.View .Type = wdPrintView .SeekView = wdSeekCurrentPageHeader End With
一番外側のFor Each~Nextループの前に入れてください。
最終更新日時:2024-03-13 20:31
Home » ワードマクロ・Word VBAの使い方 » ヘッダー&フッター » Word VBAでヘッダーのフィールドコードを取得する