複数Wordファイルのページ番号を連番にする

複数のWord文書のページ番号を連番にするマクロです。前の文書の最終ページを取得して次の文書の先頭ページ番号を設定していきます。

ファイル名でソートしたとき、構成順になっていることを前提としています。
例 : 1章_XXXXX.docx、2章_XXXXX.docx、3章-1_XXXXX.docx、3章-2_XXXXX.docx

Sub フォルダー内文書ページ番号の連番化()

  Const USERPATH As String = "C:\@test" 'ファイルの場所
  Dim oDoc As Document
  Dim aPath As String
  Dim cnt As Long
  Dim pg As Long, pgsum As Long
  
  aPath = Dir(USERPATH & "\*.docx", vbNormal)
  Do While aPath <> ""
    cnt = cnt + 1
    Set oDoc = Documents.Open(USERPATH & "\" & aPath)
    With oDoc
      'この文書のページ数
      pg = .Content.Information(wdNumberOfPagesInDocument)
      If cnt = 1 Then
        '1番目は変更なしで閉じる
        .Close SaveChanges:=False
      Else
        '2番目以降は開始ページ番号を設定して閉じる
        .Sections(1).Footers(wdHeaderFooterPrimary) _
            .PageNumbers.StartingNumber = pgsum + 1
        .Close SaveChanges:=True
      End If
      '現在までの総ページ
      pgsum = pgsum + pg
    End With
    aPath = Dir()
  Loop
  Set oDoc = Nothing

End Sub
フォルダー内の文書をファイル名順に処理する

Dir関数とDo~Loop文で文書ファイルを順番に処理します。

.Information(wdNumberOfPagesInDocument)

.Information は、指定する範囲ついて引数に応じた情報を返します。ページ数関連の引数は3種類あります。

  • wdNumberOfPagesInDocument : 文書全体のページ数
  • wdActiveEndPageNumber : 指定範囲(セクションなど)のページ数
  • wdActiveEndAdjustedPageNumber : 指定範囲(セクションなど)の最終ページ番号

サンプルでは、文書のページ数を順次足すことで最終ページ番号を求めていますが、   Document.Sections.Last.Range.Information(wdActiveEndAdjustedPageNumber) で求めることもできます。

Document.Sections(1).Footers(wdHeaderFooterPrimary)

ページ番号の文書内での配置位置です。この例は先頭のセクション、先頭のフッターの場合です。

.PageNumbers.StartingNumber = 開始ページ番号

文書の開始ページ番号を設定します。

タイトルとURLをコピーしました