我有一个宏,可将文档切成一页的每个部分:
Selection.HomeKey Unit:=wdStory
While Selection.Information(wdActiveEndPageNumber) < Selection.Information(wdNumberOfPagesInDocument)
ActiveDocument.Bookmarks("\page").Range.Select
With Selection.Find
.Text = "^b"
.Forward = True ' or False
.Wrap = wdFindStop
.Format = False
If .Execute Then
' found section break: go to next page
Selection.GoToNext wdGoToPage
Else
' found no section break: append one
Selection.Collapse Direction:=wdCollapseEnd
Selection.InsertBreak Type:=wdSectionBreakNextPage
End If
End With
Wend
在编辑文档后,我可以重新运行宏,并且只会再次扩展页面。
按照上面的代码,我遍历所有部分,并在页眉和页脚中禁用“链接到上一个”属性。然后,我再次遍历这些部分以“取消链接” PAGE和NUMPAGE字段,即将字段替换为其实际值。
这适用于某些文档,不适用于其他文档。在有问题的文档中,当我输入分节符(手动或通过VBA)时,下一节的页码跳至1,而在没有问题的文档中则没有。
添加分节符时如何控制自动更新页码?
答案 0 :(得分:1)
页码是否重新启动由页眉和页脚\页码\格式页码,设置“开始于”(与“从上一节继续”相比)控制。如果将其设置为数字,则在插入分节符时将重新开始页码编号。默认情况下,此功能为“关闭”,但例如可以在模板中将其打开。
在对象模型中,等效对象为Document.Section.HeaderFooter.PageNumbers
,属性为RestartNumberingAtSection
。将此设置为False
可使编号从一个部分到下一个部分连续。如果确定文档只有一个部分,则可以对该部分执行此操作,任何新的部分都将“继承”设置。否则,将SameAsPrevious
设置为False
的同时循环检查。
Sub TestBreakUpPages()
Dim Doc As Word.Document
Dim Sec As Word.Section
Dim hdr As Word.HeaderFooter
Dim pageNum As PageNumbers
Set Doc = ActiveDocument
Selection.HomeKey Unit:=wdStory
While Selection.Information(wdActiveEndPageNumber) < Selection.Information(wdNumberOfPagesInDocument)
Doc.Bookmarks("\page").Range.Select
With Selection.Find
.Text = "^b"
.Forward = True ' or False
.wrap = wdFindStop
.Format = False
If .Execute Then
' found section break: go to next page
Selection.GoToNext wdGoToPage
Else
' found no section break: append one
Selection.Collapse Direction:=wdCollapseEnd
Selection.InsertBreak Type:=wdSectionBreakNextPage
End If
End With
Wend
For Each Sec In Doc.Sections
Set hdr = Sec.Headers(wdHeaderFooterPrimary)
Set pageNum = hdr.PageNumbers
If pageNum.RestartNumberingAtSection Then
pageNum.RestartNumberingAtSection = False
End If
hdr.LinkToPrevious = False
Next
For Each Sec In Doc.Sections
Set hdr = Sec.Headers(wdHeaderFooterPrimary)
hdr.Range.Fields.Unlink
Next
End Sub