微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Microsoft Word 2016 VBA 问题与 LinkToPrevious

如何解决Microsoft Word 2016 VBA 问题与 LinkToPrevious

我们在 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

第二个问题是否与第一个问题有关?

解决方法

我发现问题与发送到后台语句的形状和在页脚中插入自动文本有关。如果您多次运行(例如 4-5 次),我创建了一段失败的代码(即设置与之前的 true 相同,即使代码设置为 false)。要运行下面的代码,您需要创建一个自动文本“abcd”,其中包含一个锚定在页脚上的形状。您可以使用内置的笑脸形状来创建自动图文集,如下所示。 autotext sample

代码如下:

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

任何可以提供帮助的建议。我很想解决这个问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。