使用 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
我正在通过代码构建页脚。通过 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