首页 > 解决方案 > 重新开始页码

问题描述

我正在尝试使用 VBA 在同一个 Word 文件中生成一些文档。对于每个文档,页码应从 1 开始。

我尝试使用来自 stackoverflow 的代码以及记录各种宏并使用该代码,但是当我运行我的宏时,它不起作用。真正奇怪的是,我的宏中有两个地方有这段代码,它在第二个地方工作,但不是第一个,我不知道为什么。

- 生成第一个文档的代码

Selection.InsertBreak Type:=wdSectionBreakNextPage
If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
    ActiveWindow.Panes(2).Close
End If
If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow. _
    ActivePane.View.Type = wdOutlineView Then
    ActiveWindow.ActivePane.View.Type = wdPrintView
End If
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter
With Selection.HeaderFooter.PageNumbers
    .NumberStyle = wdPageNumberStyleArabic
    .HeadingLevelForChapter = 0
    .IncludeChapterNumber = False
    .ChapterPageSeparator = wdSeparatorHyphen
    .RestartNumberingAtSection = True
    .StartingNumber = 1
End With
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument

- 生成第二个文档的代码

在应该将文档第 5 页上的页码重置为 #1 的代码中,光标改为向上移动到文档的第一页并将页码重置为 1,这不会做任何事情,因为是文档的第一页。在第二个文档的第一页上,我似乎无法让光标停留在应有的位置。最奇怪的是,我稍后在宏中有相同的代码,它在那里工作。

标签: vbams-word

解决方案


您已插入分节符,但没有任何代码将 .LinkToPrevious 属性设置为 false。因此,您的新部分可能只是在前一部分标题上继续。这就是光标跳到第一页的原因。

要解决您的问题,您需要确保插入点位于新部分中,然后您需要使用 .HeaderFooter.LinktoPrevious=false。

您可能需要非常具体地使用 .LinktoPrevious 属性并将其链接到正确的页眉或页脚。如果您没有意识到每个部分都有三个。


推荐阅读