【Word VBA】フッターにページ番号を入れるWordマクロ

2014年10月8日

セミナーの受講生から、フッターにページ番号を挿入するマクロがほしいとご要望をいただきました。

このマクロでできること

文書のセクション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

関連記事

Insert page number in footer using VBA

-コード
-, , ,