VBA:从XFA表单中提取XML数据并传递给XML解析器



我正在尝试使用VBA从XFA表单中提取XML信息。

下面的代码将XML数据提取到一个单独的文件中,但它需要用户交互(要求用户为XML文件命名(。由于Adobe的"安全路径"要求(VBA自动化似乎无法绕过(,我已经放弃了在没有用户交互的情况下实现自动化的尝试。

Dim objPDDoc As New AcroPDDoc
Dim objJSO As Object
Dim strSafePath as String
strSafePath = ""
objPDDoc.Open (FileName)
Set objJSO = objPDDoc.GetJSObject
objJSO.xfa.host.exportdata strSafePath, 0

我更愿意做的是直接使用MSXML2.DOMDocument60解析XML信息。我希望能够做这样的事情:

Dim XMLDoc As New MSXML2.DOMDocument60
If XMLDoc.Load(objJSO.xfa.host.exportdata) = True Then
Call funcParse(XMLDoc)
End if

然而,用objJSO.xfa.host.exportdata加载XMLDoc是不起作用的,而且我似乎无法确定使用任何xfa.host方法/属性传递XML信息的可能性(如果有的话(。

欢迎任何帮助-同时告诉我这在VBA中是不可能的。

试试这样的东西:

myXMLstring = "<XML>BLA</XML>"
Dim xmlDoc As MSXML2.DOMDocument60
Set xmlDoc = New MSXML2.DOMDocument60
xmlDoc.LoadXML myXMLstring

请参阅以获取更好的示例:例如,请参阅此帖子:https://desmondoshiwambo.wordpress.com/2012/07/03/how-to-load-xml-from-a-local-file-with-msxml2-domdocument-6-0-and-loadxml-using-vba/

此处为原始海报。经过大约一年断断续续的研究,我找到了解决方案。

通过AccroPDDoc.GetJSObject访问JavaScript对象后,我可以使用objJSO.xfa.this.saveXML将嵌套的XML提取为字符串。

这样,我就不必首先将嵌套的XML保存到文件中(这需要用户交互(,而是可以立即提取嵌套的XML并将其传递给解析器。

Dim objPDDoc as New AcroPDDoc
Dim objJSO as Object
Dim XMLDoc As New MSXML2.DOMDocument60
ObjPDDoc.Open (Filename)
Set objJSO = objPDDoc.GetJSObject
If XMLDoc.LoadXML (objJSO.xfa.this.saveXML) = True then
ParseXML(XMLDoc)
End if

最新更新