Home » ワードマクロ・Word VBAの使い方 » ヘッダー・フッター » Word VBAでヘッダー・フッターを前と同じにする

Word VBAでヘッダー・フッターを前と同じにする

対象:Word2007, Word2010, Word2013

「ワードvba フッター セクション 前と同じ」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

複数のセクションに分かれている文書で、ヘッダー・フッターの設定を前と同じにするには、Word VBAでどのようなコードを書けばいいのかを探している方による検索です。

[スポンサードリンク]

全セクションのヘッダー・フッターを前と同じにするサンプルマクロ

以下のようなWordマクロで、アクティブな文書の、すべてのセクションの、ヘッダーとフッターを前のセクションと同じにすることができます。

Sub 全セクションのヘッダーフッターを前と同じ設定にする()
 Dim sec As Section
 Dim hd_ft As HeaderFooter

 For Each sec In ActiveDocument.Sections
  For Each hd_ft In sec.Headers
   hd_ft.LinkToPrevious = True
  Next

  For Each hd_ft In sec.Footers
   hd_ft.LinkToPrevious = True
  Next
 Next sec
End Sub

アクティブ文書の全セクションに対してループを回して、
 For Each sec In ActiveDocument.Sections

各セクション内の、すべてのヘッダーに対してループを回し、
  For Each hd_ft In sec.Headers
ヘッダーのLinkToPreviousプロパティをTrueに設定しています。
   hd_ft.LinkToPrevious = True

続いて、各セクション内の、すべてのフッターに対してループを回し、
  For Each hd_ft In sec.Headers
フッターのLinkToPreviousプロパティをTrueに設定しています。
   hd_ft.LinkToPrevious = True

もし、フッターだけを前と同じにしたいのなら、
  For Each hd_ft In sec.Headers
ではじまるヘッダーのループ処理を削除して
  For Each hd_ft In sec.Footers
ではじまるフッターのループ処理だけにしてください。

HeaderFooterオブジェクトについて

オブジェクトブラウザーで確認すると、Sectionオブジェクトには、
Headersプロパティと、

ヘッダー・フッターを前と同じにするWordマクロ

Footersプロパティが存在しますが、

ヘッダー・フッターを前と同じにするWordマクロ

上図のとおり、いずれもHeadersFootersコレクションオブジェクトを返します。

ヘッダーとフッターは別に扱うこともできるので、HeadersコレクションオブジェクトとFootersコレクションオブジェクトが用意されていてもいいように感じますが、HeadersFootersコレクションオブジェクトとなっています。

HeadersFottersは、HeaderFooterオブジェクトを個々のオブジェクトとして持つコレクションオブジェクトです。

個々のHeaderFooterオブジェクトに何が含まれているのかを疑問に持つ方も多いでしょう。

HeadersFottersコレクションオブジェクトの、Itemプロパティには、WdHeaderFooterIndex列挙型の、

ヘッダー・フッターを前と同じにするWordマクロ

定数を指定できます。

具体的には、
 wdHeaderFooterEvenPages
 wdHeaderFooterFirstPage
 wdHeaderFooterPrimary
という3つの定数が用意されています。

ヘッダー・フッターを前と同じにするWordマクロ

この定数の名前から想像できるとおり、
wdHeaderFooterEvenPagesを指定すれば
 偶数ページのHeaderFooterオブジェクト
wdHeaderFooterFirstPageを指定すれば
 セクションの1ページ目のHeaderFooterオブジェクト
wdHeaderFooterPrimaryを指定すれば
 主たるHeaderFooterオブジェクト
が、それぞれ取得できます。

このように、各セクションに3つのHeaderHooterオブジェクトが存在しているので、上記のマクロでは
ヘッダーのHeadersHootersコレクションオブジェクトに対して、
  For Each hd_ft In sec.Headers
ループを回し、続いてフッターのHeadersHootersコレクションオブジェクトに対して、
  For Each hd_ft In sec.Footers
ループを回しています。

[スポンサードリンク]

Home » ワードマクロ・Word VBAの使い方 » ヘッダー・フッター » Word VBAでヘッダー・フッターを前と同じにする

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

検索


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

.