我正在探索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解决方案。
任何关于这方面的建议都是非常感谢的。
发布于 2013-06-04 02:45:27
删除映射,然后重新创建:
Dim s as String
s = ActiveDocument.ContentControls(#).XMLMapping.XPath
ActiveDocument.ContentControls(#).XMLMapping.Delete
ActiveDocument.ContentControls(#).XMLMapping.SetMapping s发布于 2015-05-07 00:09:16
您可以使用新的CustomXmlPart遍历所有控件并重做映射。
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 cchttps://stackoverflow.com/questions/16886027
复制相似问题