セミナーの受講生から、フッターにページ番号を挿入するマクロがほしいとご要望をいただきました。
<目次>
このマクロでできること
文書のセクション1のフッターにページ番号を挿入します。セクションを区切っていない場合、文書全体がセクション1となります。
非常にシンプルなマクロです。
そのため、複数のセクションがあり、偶数ページ、奇数ページでページ番号の表示位置が変わるような場合には対応しておりません。
マクロ1の解説
フッターやヘッダーに文字列を挿入するときにはコツがいります。
以下の場合には、最初に文字を入れて、対応する部分にページ番号のフィールドを当てはめる方法にしています。
まず、以下の文字を挿入します。
ページ数/全ページ数
そして、最初の単語の位置にページ番号のフィールドを入れます。Type:=wdFieldPageで指定します。
ページ数/全ページ数
次に、3つめの単語の位置に総ページ番号のフィールドを入れます。Type:=wdFieldNumPagesで指定します。
ページ数/全ページ数
マクロ1
Sub フッターにページ番号を入れる1() Dim myRange As Range Set myRange = ActiveDocument.Sections(1). _ Footers(wdHeaderFooterPrimary).Range With myRange '文字列の挿入 .Text = "ページ数/全ページ数" '1つ目の単語の位置にPAGEフィールドを挿入 .Fields.Add Range:=.Words(1), _ Type:=wdFieldPage, _ PreserveFormatting:=False '更新時に書式保持しない '3つ目の単語の位置にNUMPAGESフィールドを挿入 .Fields.Add Range:=.Words(3), _ Type:=wdFieldNumPages, _ PreserveFormatting:=False '更新時に書式保持しない '中央揃え .Paragraphs.Alignment = wdAlignParagraphCenter End With Set myRange = Nothing End Sub
マクロ2の解説
マクロ1と同じ考え方ですが、フィールドの入れ方を変えました。
スイッチをつけたりして複雑なフィールドを入れる場合には、Textオプション項目で具体的な文字列を指定できます。
この場合、Typeにはフィールドを指定しません。つまり、Type:=wdFieldEmptyです。
マクロ2
Sub フッターにページ番号を入れる2() Dim myRange As Range Set myRange = ActiveDocument.Sections(1). _ Footers(wdHeaderFooterPrimary).Range With myRange '文字列の挿入 .Text = "ページ数/全ページ数" '1つ目の単語の位置にPAGEフィールドを挿入 .Fields.Add Range:=.Words(1), _ Type:=wdFieldEmpty, _ Text:="PAGE", _ PreserveFormatting:=False '更新時に書式保持しない '3つ目の単語の位置にNUMPAGESフィールドを挿入 .Fields.Add Range:=.Words(3), _ Type:=wdFieldEmpty, _ Text:="NUMPAGES", _ PreserveFormatting:=False '更新時に書式保持しない '中央揃え .Paragraphs.Alignment = wdAlignParagraphCenter End With Set myRange = Nothing End Sub