簡體   English   中英

VBA:從 XFA 表單中提取 XML 數據並傳遞給 XML 解析器

[英]VBA: Extracting XML data from XFA form and passing to XML parser

我正在嘗試使用 VBA 從 XFA 表單中提取 XML 信息。

下面的代碼用於將 XML 數據提取到一個單獨的文件中,但它需要用戶交互(要求用戶為 XML 文件命名)。 由於 Adob​​e 的“安全路徑”要求(這似乎無法通過 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM