「ヘッダーの表を選択する word vba」
といった検索でアクセスがありました。
本当に表を選択する必要があるのかは考えていただきたいところですが、参考になりそうなWordマクロをご紹介しておきます。
Document.Sections経由でヘッダーの表を選択する
Document.Sectionsを経由するなら、以下のようなWordマクロです。
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
と、印刷レイアウトモードのヘッダー編集状態にしています。
- 『Word VBA入門』で紹介しているオブジェクトごとのプロパティ一覧
- 『Word VBA入門』で紹介しているオブジェクトごとのメソッド一覧
- 『Excel VBAユーザーのためのWord VBA入門(2):Tableの基本編』も出ました。
最終更新日時:2024-2-27 06:36
Home » ワードマクロ・Word VBAの使い方 » ヘッダー&フッター » Word VBAでDocument.Sectionsを経由してヘッダーの表を選択する