Home » ワードマクロ・Word VBAの使い方 » ヘッダー・フッター » Word VBAでヘッダーのフィールドコードを取得する

Word VBAでヘッダーのフィールドコードを取得する

動作検証バージョン:Windows 11 Home + 64bit Word バージョン 2403(ビルド17425.20000クイック実行)ベータチャネル

フィールドコードを取得するWord VBAのコードをご紹介しています。

この方法は、あくまでも本文のフィールドコード取得を行うもので、ヘッダーやフッターに存在するフィールドコードを取得できません。

[スポンサードリンク]

ヘッダーのフィールドコードを取得するサンプルマクロ

ヘッダー&フッターに存在するフィールドコード取得する場合、以下のWordマクロが参考になるでしょう。

Sub ヘッダーのフィールドコードを順番に取得する()
 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でヘッダーのフィールドコードを取得する

「ヘッダー・フッター」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.