【发布时间】:2021-07-17 10:48:12
【问题描述】:
我的文档有一个带有书签内容控件的表单,这些控件通过链接到内容选项链接到自定义文档属性。自定义文档属性用于在文档稍后的报告中显示表单值。这种方法的唯一问题是,当表单中的值更新时,它不会自动更新链接的自定义文档属性的值。
手动更新表单时,我发现访问“高级属性”对话框会更新链接。 (然后我选择报告内容并按 F9 更新 DOCPROPERTY 字段。)但是现在我需要自动填写表单,并且我找不到更新 VBA 中的链接的方法。我尝试访问自定义文档属性,甚至将链接源替换为原始源,认为访问链接可能会更新它们(请参见下面的代码),但链接值不会以这种方式更改。有谁知道如何以编程方式更新这些链接?高级属性对话框是如何做到的?
With wdDoc
For Each dp In .CustomDocumentProperties
If dp.LinkToContent Then
dp.LinkSource = dp.LinkSource
End If
Next dp
.Content.Fields.Update
End With
【问题讨论】:
-
如果您使用内容控件,为什么不将它们直接链接到自定义 XML 部件而不是使用自定义属性?内容控件会自动更新,而字段则不会,并且链接到内容的自定义属性充其量是不稳定的。
-
有关 Timothy Rylatt 所谈论内容的更多信息,请参阅我关于使用映射内容控件在文档中复制数据的页面:addbalance.com/word/MappedControls.htm#PageStart
-
感谢您的回复。我没有过多研究自定义 XML 映射,因为它看起来需要一个包含映射的附加 XML 文件。我的组织不允许对其 SOE 进行任何加载项,而且他们通常根本不允许使用宏,但一段时间后,我设法获得了安全部门的同意,将我的宏认证为“受信任”,因为这样可以节省很多时间生成报告。我很确定他们不会允许外接程序规则有任何例外,所以我只能在开箱即用 Word 的范围内工作。
-
FWIW,你说得对,内容链接不稳定,或者没有经过深思熟虑。我尝试通过更新值从属性中取消链接 LinkToSource 中的书签来强制更新,然后重新链接书签,但我无法更改 LinkToContent 或 LinkSource 的值,即使文档说它们已读/写。 (我可以将 LinkToContent 设置为 False,但调试器显示该值仍然为 True,如果我尝试在 LinkSource 中输入“”,则会出现运行时错误。)文档说如果 LinkSource 有值,LinkToContent 会自动设置为 True ,所以它是 Catch-22。
-
自定义 XML 部分包含在文档或模板中。 Office 文档基本上只是包含多个 XML 文件的 zip 存档。