Word マクロで現在のページ番号に基づいてヘッダーを処理しようとしています。
Sub InsertHeader()
Dim oShape As Shape
Dim PageNumber As Integer
Dim oSection As Section
Dim oHeader As HeaderFooter
For Each oSection In ActiveDocument.Sections
If oSection.Index > 1 Then
For Each oHeader In oSection.Headers
oHeader.Range.Select
PageNumber = Selection.Information(wdActiveEndPageNumber)
If oHeader.Exists Then
Select Case oHeader.Index
Case Is = wdHeaderFooterFirstPage
If PageNumber Mod 2 = 0 Then
ActiveDocument.AttachedTemplate.AutoTextEntries("HeaderFirst"). _
Insert Where:=Selection.Range
oHeader.Range.Select
Selection.Range.ShapeRange.Left = CentimetersToPoints(2.26)
End If
If PageNumber Mod 2 = 1 Then
ActiveDocument.AttachedTemplate.AutoTextEntries("HeaderFirst"). _
Insert Where:=Selection.Range
End If
End Select
End If
Next oHeader
End If
Next oSection
End Sub
これをローカルで実行すると、マクロは正常に動作します。しかし、ネットワーク ドライブから開いたドキュメントに対して同じマクロを実行するとPageNumber
、値が -1 になるため、マクロは失敗します。これはなぜでしょうか?
編集: このマクロを再検討する必要がありました。別のマシンでテストしたところ、そこでも実行されないことが明らかになりました。さらに悪いことに、マクロは元のテスト環境では実行されませんでした。
最後に、ページ レイアウトを変更することで問題を解決したので、このマクロはもう必要ありません (余白の設定で「ガター」設定を使用して対称的なページ レイアウトを作成しました)。
それでも、疑問がwdActiveEndPageNumber
残ります。信頼性がないように見えます。たぶん、ヘッダーからこの関数を呼び出すことに関係していますか?