使用 VBA 格式化 Word 页脚中的第 XX 页,共 XX 页时出现问题

Problem Formatting Page XX of XX in Word Footer Using VBA

我正在通过代码构建页脚。通过 VBA 添加字段时,我在正确格式化 Word 页脚中的页数时遇到问题。当代码运行时,格式总是以 XX of XX (1 of 20) 而不是 XX of XX (1 of 20) 结束。我尝试了以下方法,但数字始终显示页码,但在“of”一词前没有 space。

    With rng
        .Text = "NUMPAGES "
        Set oFooterRng1 = rng.Words(1)
        .Fields.Add Range:=oFooterRng1, Type:=wdFieldEmpty, Text:="NUMPAGES  \* Arabic ", PreserveFormatting:=True
    End With
    rng.Collapse wdCollapseStart
    rng.Text = " of "
    rng.Collapse wdCollapseStart
    With rng
        .Text = "PAGE "
        Set oFooterRng1 = rng.Words(1)
        .Fields.Add Range:=oFooterRng1, Type:=wdFieldEmpty, Text:="PAGE  \* Arabic ", PreserveFormatting:=True
    End With

或这个

    With rng
        .Text = "PAGE of NUMPAGES "
        Set oFooterRng1 = rng.Words(1)
        Set oFooterRng2 = rng.Words(3)
        .Fields.Add Range:=oFooterRng1, Type:=wdFieldEmpty, Text:="PAGE  \* Arabic ", PreserveFormatting:=True
        .Fields.Add Range:=oFooterRng2, Type:=wdFieldEmpty, Text:="NUMPAGES  \* Arabic ", PreserveFormatting:=True
    End With

尝试一些基于:

Sub Demo()
Application.ScreenUpdating = False
With ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary).Range
  .InsertAfter Text:="Page "
  .Fields.Add Range:=.Characters.Last, Type:=wdFieldEmpty, Text:="PAGE", PreserveFormatting:=False
  .InsertAfter Text:=" of "
  .Fields.Add Range:=.Characters.Last, Type:=wdFieldEmpty, Text:="NUMPAGES", PreserveFormatting:=False
End With
Application.ScreenUpdating = True
End Sub

并且,按照您要实现的相反方向进行:

Sub Demo()
Application.ScreenUpdating = False
With ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary).Range
  .Fields.Add Range:=.Characters.Last, Type:=wdFieldEmpty, Text:="NUMPAGES", PreserveFormatting:=False
  .Collapse wdCollapseStart
  .Text = " of "
  .Collapse wdCollapseStart
  .Fields.Add Range:=.Duplicate, Type:=wdFieldEmpty, Text:="PAGE", PreserveFormatting:=False
  .Collapse wdCollapseStart
  .Text = "Page "
End With
Application.ScreenUpdating = True
End Sub