首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XML/VBA -更新Word文档内容控件值

XML/VBA -更新Word文档内容控件值
EN

Stack Overflow用户
提问于 2013-06-03 02:40:04
回答 2查看 3.5K关注 0票数 1

我正在探索XML和MS Word,将其作为生成具有动态内容的表单的解决方案,但我发现很难完成看似简单的任务。

使用MSDN中的示例

http://msdn.microsoft.com/en-us/library/office/gg605188%28v=office.14%29.aspx

假设我打开xml文档,并将<CompanyName>Adventure Works</CompanyName>更改为<CompanyName>Gadget Co.</CompanyName>。如何使.xml文档中更改的值反映在Word文档中?

我试过了:

1)单据保存、关闭、重新打开。

2)再次执行ActiveDocument.CustomXMLParts(4).Load命令。(即使在关闭和打开之后,也会引发已加载的错误。)

3)使用ActiveDocument.ContentControls(#).XMLMapping.SetMapping过程重新映射控件。(没有错误,但没有更新内容的更改。)

似乎大多数XML和Office Suite文档都是面向.Net开发的。我真的不想在这个解决方案中扩展到.Net,但似乎VBA对它的支持要有限得多。

最终,最终的输出将是一个邮件合并类型的文档,其中包含几个要单独解析并保存为pdf的嵌套文档。内容将是动态的,具有可变长度的表和动态生成的复选框(带有相应的文本内容控件)。在这一点上,我不确定Word和XML是否是可行的方法,我正在考虑基于VBA的MS Publisher解决方案。

任何关于这方面的建议都是非常感谢的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-04 02:45:27

删除映射,然后重新创建:

代码语言:javascript
复制
Dim s as String
s = ActiveDocument.ContentControls(#).XMLMapping.XPath
ActiveDocument.ContentControls(#).XMLMapping.Delete
ActiveDocument.ContentControls(#).XMLMapping.SetMapping s
票数 1
EN

Stack Overflow用户

发布于 2015-05-07 00:09:16

您可以使用新的CustomXmlPart遍历所有控件并重做映射。

代码语言:javascript
复制
Dim xmlPart As CustomXMLPart
Dim cc As ContentControl

Set xmlPart = ActiveDocument.CustomXMLParts.Add
xmlPart.Load (c:/temp/test.xml)

For Each cc In ActiveDocument.ContentControls
    cc.XMLMapping.SetMapping cc.XMLMapping.XPath, cc.XMLMapping.PrefixMappings, xmlPart
Next cc
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16886027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档