首页 > 解决方案 > 使用 vba 从 XML 文件中提取数据到 MS excel

问题描述

嗨,我有一个来自 API 的 xml 响应,我想从 xml 文件中提取数据到 excel,但所有字段都在部分中。我是 XML 的初学者,我无法从部分中提取数据。我试图编写一些代码,但没有一个成功。

我写了一些代码,但它不起作用。

标签: excelxmlvba

解决方案


您需要的数据是嵌入在响应 XML 的 CDATA 部分中的单独 XML 文档。

您需要提取 XML 并将其加载到第二个文档对象中,以便提取所需的数据。

例如:

    Sub Test()
        
        'Tools->References->Microsoft Xml v.60
        Dim dom As MSXML2.DOMDocument60, childDoc As MSXML2.DOMDocument60
        Dim recXML As String, rec, recs
        
        Set dom = New MSXML2.DOMDocument60
        Set childDoc = New MSXML2.DOMDocument60
        
        dom.Load "C:\Users\Tim\OneDrive\Desktop\temp\response.xml"
        
        'you need to set up the namespace property
        dom.SetProperty "SelectionNamespaces", "xmlns:abc='http://www.isinet.com/xrpc42'"
        
        Dim xmlSomeCData As MSXML2.IXMLDOMElement
        'use the namspace alias we created earlier when querying
        Set xmlSomeCData = dom.SelectSingleNode("abc:response/abc:map/abc:map/abc:val")
    
        recXML = xmlSomeCData.Text '<<< the text in the CDATA section is the source XML
                                   '    to be loaded into ChildDoc
        childDoc.LoadXML recXML
        'select some nodes from the embedded xml document....
        Set recs = childDoc.SelectNodes("//records/REC/UID")
        Debug.Print recs.Length
        For Each rec In recs
            Debug.Print rec.Text
        Next rec
    
    End Sub

推荐阅读