我们已经在VBA中开发了一些Microsoft Word工具,允许用户在文档中添加带有A3和A4页面大小以及纵向和横向选项的部分。我们使用一个表单向用户显示单选按钮,用户可以在其中选择新的部分、页面大小和方向。VBA代码添加一个新部分,然后关闭页眉和页脚“与上一页相同”设置,设置页眉和页脚上的页边距并添加特定的自动文本,以控制页眉和页脚的布局,即取决于所选的单选按钮。我们遇到问题的文档也有奇数页和偶数页。但在没有奇数和偶数页面布局的文档中也会失败。
我们已经在Word 2010上使用这段代码很多年了,没有问题,但我们现在在Word 2016和下面的代码部分遇到了不一致的问题。也就是说,即使代码专门将“链接到上一个”设置为false,代码也不会随机关闭“与前一个相同”。下面是我们在Word 2010上使用的代码的一部分,没有问题,现在失败:
With NewSection
.Headers(wdHeaderFooterFirstPage).LinkToPrevious = False
.Headers(wdHeaderFooterPrimary).LinkToPrevious = False
.Headers(wdHeaderFooterEvenPages).LinkToPrevious = False
.Footers(wdHeaderFooterFirstPage).LinkToPrevious = False
.Footers(wdHeaderFooterPrimary).LinkToPrevious = False
.Footers(wdHeaderFooterEvenPages).LinkToPrevious = False
End With我们在上面尝试做的事情有没有已知的问题?为什么“链接到以前版本”可能不能一致地工作。
另一个可能与上面的问题相关的问题是,在Word 2016上,即使之前的部分存在,我们也会得到下面的消息:Please see the screenshot
它在上面的代码行中随机失败,例如:Please see the screenshot
第二个问题与第一个问题有关吗?
发布于 2021-07-29 03:51:31
我发现问题与shape sent to back语句和在页脚插入autotext有关。我创建了一段代码,如果你多次运行它(比如4-5次),它就会失败(即设置为与之前相同的true,即使代码设置为false)。要运行下面的代码,您需要创建一个包含锚定在页脚上的形状的自动图文"abcd“。你可以使用内置的笑脸形状来创建自动图文,如下所示。

代码如下:
Sub AddSections()
Dim rng As Range
Dim NewSection As Section
Set rng = Selection.Range
Set NewSection = ActiveDocument.Sections.Add(Selection.Range)
With NewSection
.Headers(wdHeaderFooterFirstPage).LinkToPrevious = False
.Headers(wdHeaderFooterPrimary).LinkToPrevious = False
.Headers(wdHeaderFooterEvenPages).LinkToPrevious = False
.Footers(wdHeaderFooterFirstPage).LinkToPrevious = False
.Footers(wdHeaderFooterPrimary).LinkToPrevious = False
.Footers(wdHeaderFooterEvenPages).LinkToPrevious = False
ActiveDocument.AttachedTemplate.BuildingBlockEntries("abcd").Insert Where:=.Footers(wdHeaderFooterPrimary).Range, RichText:=True
ActiveDocument.AttachedTemplate.BuildingBlockEntries("abcd").Insert Where:=.Footers(wdHeaderFooterEvenPages).Range, RichText:=True
.Footers(wdHeaderFooterPrimary).Range.ShapeRange.ZOrder msoSendToBack
.Footers(wdHeaderFooterEvenPages).Range.ShapeRange.ZOrder msoSendToBack
End With
NewSection.Range.Select
Selection.Collapse
Selection.TypeParagraph
End Sub任何可以提供帮助的建议。我很想解决这个问题。
https://stackoverflow.com/questions/68410199
复制相似问题