Home » ワードマクロ・Word VBAの使い方 » ヘッダー&フッター » Word VBAでDocument.Sectionsを経由してヘッダーの表を選択する

Word VBAでDocument.Sectionsを経由してヘッダーの表を選択する

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

「ヘッダーの表を選択する word vba」
といった検索でアクセスがありました。

本当に表を選択する必要があるのかは考えていただきたいところですが、参考になりそうなWordマクロをご紹介しておきます。

Document.Sections経由でヘッダーの表を選択する

Document.Sectionsを経由するなら、以下のようなWordマクロです。

Sub ヘッダーの表を選択する__Document_Sections経由()
On Error GoTo ErrHandl
 
 With ActiveWindow.View
  .Type = wdPrintView
  .SeekView = wdSeekCurrentPageHeader
 End With
 
 ActiveDocument.Sections(1) _
  .Headers(wdHeaderFooterPrimary)_
    .Range.Tables(1).Select

Exit Sub
ErrHandl:
 Select Case Err.Number
  Case 5941
   MsgBox "ヘッダーに表は存在しないようです。"
  Case Else
   MsgBox Err.Description & vbCrLf & Err.Number
 End Select
End Sub

サンプルマクロで行っている処理について

ヘッダーの表を選択しているのは、

ActiveDocument.Sections(1) _
 .Headers(wdHeaderFooterPrimary)_
   .Range.Tables(1).Select

の部分です。

ヘッダー内に存在する表を表すTableオブジェクトを取得する「ActiveDocument .Sections(1).Headers(wdHeaderFooterPrimary).Range.Tables(1)」は、ご紹介済みの「ActiveDocument .Sections(1).Headers(1).Range.Tables(1)」と同じです。

定数wdHeaderFooterPrimaryを使うのが教科書的には良いコードですが、いかんせん定数名が長いのが難点です。

拙著『Excel VBAユーザーのためのWord VBA入門(2): Tableの基本編』の[9-2. TablesからTableを取得する]で紹介しているとおり、TableオブジェクトにはSelectメソッドがありますから、

「.Sections(1).Headers(wdHeaderFooterPrimary).Range.Tables(1)」で取得したTableをSelectメソッドで選択しています。

この、

ActiveDocument.Sections(1) _
 .Headers(wdHeaderFooterPrimary)_
   .Range.Tables(1).Select

だけで、ヘッダーの表を選択できるのですが、印刷レイアウトモードで実行しても下書きモードに変更されてしまいます。

印刷レイアウトモードのままで選択したい、というニーズが多いように思えるので、上記のマクロではヘッダーの表を選択する前に、

With ActiveWindow.View
 .Type = wdPrintView
 .SeekView = wdSeekCurrentPageHeader
End With

と、印刷レイアウトモードのヘッダー編集状態にしています。

最終更新日時:2024-2-27 06:36

[スポンサードリンク]

Home » ワードマクロ・Word VBAの使い方 » ヘッダー&フッター » Word VBAでDocument.Sectionsを経由してヘッダーの表を選択する

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

検索


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

.