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

Word VBAで全セクションのヘッダー&フッターを前と同じにする

対象:Word2007, Word2010, Word2013

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

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

[スポンサードリンク]

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

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

Sub 全セクションのヘッダーフッターを前と同じ設定にする()
 Dim sec As Section
 For Each sec In ActiveDocument.Sections

  Dim hdr As HeaderFooter
  For Each hdr In sec.Headers
   hdr.LinkToPrevious = True
  Next hdr

  Dim ftr As HeaderFooter
  For Each ftr In sec.Footers
   ftr.LinkToPrevious = True
  Next ftr

 Next sec
End Sub

アクティブ文書の全セクションに対してループを回して、

For Each sec In ActiveDocument.Sections

各セクション内の、すべてのヘッダーに対してループを回し、

 For Each hdr In sec.Headers

ヘッダーのLinkToPreviousプロパティをTrueに設定しています。

  hdr.LinkToPrevious = True

続いて、各セクション内の、すべてのフッターに対してループを回し、

 For Each ftr In sec.Footers

フッターのLinkToPreviousプロパティをTrueに設定しています。

  ftr.LinkToPrevious = True

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オブジェクト
が、それぞれ取得できます。

このように、各セクションに合計6つのHeaderFooterオブジェクトが存在しているので、上記のマクロでは
ヘッダーのHeadersFootersコレクションオブジェクトに対して、

 Dim hdr As HeaderFooter
 For Each hdr In sec.Headers

ループを回し、続いてフッターのHeadersFootersコレクションオブジェクトに対して、

 Dim ftr As HeaderFooter
 For Each ftr In sec.Footers

ループを回しています。

最終更新日時:2024-04-12 12:39

[スポンサードリンク]

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

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

検索


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

.