VBA:从 XFA 表单中提取 XML 数据并传递给 XML 解析器
VBA: Extracting XML data from XFA form and passing to XML parser
我正在尝试使用 VBA 从 XFA 表单中提取 XML 信息。
下面的代码可以将 XML 数据提取到单独的文件中,但它需要用户交互(要求用户为 XML 文件命名)。由于 Adobe 的 "safe path" 要求(这似乎无法通过 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
不起作用,而且我似乎无法弄清楚哪些(如果有的话)可能使用任何方法传递 XML 信息xfa.host methods/properties.
欢迎任何帮助 - 还告诉我这在 VBA.
中是不可能的
尝试这样的事情:
myXMLstring = "<XML>BLA</XML>"
Dim xmlDoc As MSXML2.DOMDocument60
Set xmlDoc = New MSXML2.DOMDocument60
xmlDoc.LoadXML myXMLstring
查看更好的示例:参见例如这个 post: 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
我正在尝试使用 VBA 从 XFA 表单中提取 XML 信息。
下面的代码可以将 XML 数据提取到单独的文件中,但它需要用户交互(要求用户为 XML 文件命名)。由于 Adobe 的 "safe path" 要求(这似乎无法通过 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
不起作用,而且我似乎无法弄清楚哪些(如果有的话)可能使用任何方法传递 XML 信息xfa.host methods/properties.
欢迎任何帮助 - 还告诉我这在 VBA.
中是不可能的尝试这样的事情:
myXMLstring = "<XML>BLA</XML>"
Dim xmlDoc As MSXML2.DOMDocument60
Set xmlDoc = New MSXML2.DOMDocument60
xmlDoc.LoadXML myXMLstring
查看更好的示例:参见例如这个 post: 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 并将其传递给解析器。
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