我試圖處理基於在Word宏當前頁碼標題:wdActiveEndPageNumber返回負數
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。爲什麼會這樣?
編輯:我不得不重新訪問這個宏,在另一臺機器上測試顯示它沒有在那裏運行。爲了增加傷害,宏在我的原始測試環境中不再運行。
最後,我通過更改頁面佈局來解決問題,所以我不再需要這個宏(我在頁邊距設置中使用'gutter'設置做了一個對稱的頁面佈局)。
不過,問題依然存在:看起來像wdActiveEndPageNumber
是不可靠的。也許這是從頭來調用這個函數?
關於'wdActiveEndPageNumber,http://support.microsoft.com/kb/241714顯示有與常見問題功能。 – Elias