ポムさんのプログラミング奮闘日記

ポムさんのプログラミング奮闘日記

VBAで作ったツールやプログラミングに関することを書きます

Word VBA『先頭ページのみ別指定』でヘッダーを設定する


今日はWordVBAにおけるヘッダー設定についてお話します。
実は昨日から【先頭ページのみ別指定でのヘッダー設定】で悶絶し、あまりに分からないのでTwitterにつぶやき、朝から再挑戦。ようやく解決できたので、備忘録的に投稿。たとえ一人でも誰かのお役に立てれば幸い。
最初は、ヘッダー設定なんて"そんなの簡単じゃん!"って思っていたわたくし。
ネット検索でコードを参考にするも、どうもうまくいかず。

Documentオブジェクトを指定、Sectionsプロパティでインデックス指定、Headersプロパティで、対象のセクションに含まれるヘッダーを表すHeadersFootersコレクションのインデックスまたは定数を指定、RangeオブジェクトのTextプロパティで文字列を指定。↓こんな感じに。

Application.Documents(2).Sections(1).Headers(wdHeaderFooterFirstPage).Range.Text ="任意の文字列"

これだけでデキルと思い込んでいた。
しかし一向に先頭ページにはヘッダーが設定されず、調べるも分からず。
今朝、あらためて調べていると、そもそも先頭ページのヘッダーに「先頭ページのみ別指定」の設定をまずしてやる必要がありそうだと判明。実行してみるとあら不思議、昨日の悶絶は何だったのか??

で、みつけたのがコレ↓
PageSetup で 「先頭ページのみ別指定」DifferentFirstPageHeaderFooter を True に設定してあげるのです!!

'// ヘッダーを「1ページ目のみ別指定」に設定する! ★これ大事です★ 一手間必要です!
Application.Documents(2).Sections.PageSetup.DifferentFirstPageHeaderFooter = True
'// ヘッダーへ文字列を入力
Application.Documents(2).Sections(1).Headers(wdHeaderFooterFirstPage).Range.Text = "任意の文字列"


※補足※
なお、複数の合ファイルを扱う時などは任意のドキュメントをActivateしたい時があるかもしれません。
そんなときはまず、インデックスで操作したいドキュメントを指定し、Activateしてあげると良いです。
今回私は複数ファイルを扱うのでドキュメントをインデックスで指定しました。

Application.Documents(2).Activate

もし、ファイルが複数あって操作したいドキュメントのファイル名とインデックスが分からなかったら、
下記のようにファイルの数分、インデックスを指定し、イミディエイトウインドウに表示して確認すると良いです。

Debug.Print "インデックス番号1のファイル名; " & Documents(1).Name
Debug.Print "インデックス番号2のファイル名; " & Documents(2).Name
Debug.Print "インデックス番号3のファイル名; " & Documents(3).Name