VBA Excel:从XML文件读取数据

VBA Excel:从XML文件读取数据,excel,vba,Excel,Vba,我有以下来自REST调用的XML数据 <?xml version="1.0" encoding="UTF-8"?> <response> <result> <cs>1</cs> <cs>2</cs> <cs>3</cs> <cs>4</cs&

我有以下来自REST调用的XML数据

 <?xml version="1.0" encoding="UTF-8"?>
<response>
    <result>
        <cs>1</cs>                             
        <cs>2</cs>
        <cs>3</cs>
        <cs>4</cs>
    </result>
    <result>
        <br>A</br>                             
        <br>B</br>
    </result>
</response>
我想在excel中读取这些数据,如下所示:,


在这里,cs和br标记的长度不是固定的,它对于每个数据都是不同的。

类似的东西应该适合您。请注意,我没有对每个单元格进行格式化: 首先做这个 单击工具>参考。检查这些库 -Microsoft WinHttp服务,版本5.1 -MicrosoftXMLV6.0

 Sub TestXML()
    URL = "https://example.abc.com" 'Your URL
    AuthorizationCode = "Basic <Password>" 'Please put only encrypted password

    Dim ws As Worksheet
    Dim objHTTP As New WinHttp.WinHttpRequest
    Dim jsonString As String
    Dim Resp As New DOMDocument
    Dim Result As IXMLDOMNode
    Dim i As Integer, j As Integer

    objHTTP.Open "get", URL, False
    objHTTP.SetRequestHeader "Accept", "application/xml"
    objHTTP.SetRequestHeader "Content-Type", "application/xml"
    objHTTP.SetRequestHeader "Authorization", AuthorizationCode
    objHTTP.Send

    Debug.Print objHTTP.Status
    Debug.Print objHTTP.ResponseText

    Set ws = Sheets("sheet1")
    ws.Select
    Range("A1").Select
    Cells.Clear
    Resp.LoadXML objHTTP.ResponseText
    Set lists = Resp.DocumentElement

    x = 2
    y = 1
    For Each listNode In lists.ChildNodes
        x = 2
        Cells(1, y).Value = lists.ChildNodes(y - 1).ChildNodes(0).BaseName
        For Each fieldNode In listNode.ChildNodes
            Cells(x, y).Value = fieldNode.Text
            x = x + 1
        Next fieldNode
        y = y + 1
    Next listNode
End Sub

很好,到目前为止您尝试了哪些代码?Dim objHTTP作为新的WinHttp.WinHttpRequest Dim作为新的DOMDocument Dim结果作为IXMLDOMNode URL=objHTTP.Open get,URL,False objHTTP.SetRequestHeader Accept,application/xml objHTTP.SetRequestHeader内容类型,application/xml授权代码objHTTP.SetRequestHeader Authorization,授权代码objHTTP.Send'giving 200 Debug.Print objHTTP.Status'giving xml Debug.Print objHTTP.ResponseText Resp.LoadXML objHTTP。ResponseText@S.R.KHAN为什么不将您的代码作为答案发布?“这是我的示例代码Dim objHTTP作为New WinHttp.WinHttpRequest Dim Resp作为New DOMDocument Dim Result作为IXMLDOMNode URL=objHTTP.Open get,URL,False objHTTP.SetRequestHeader接受,application/xml objHTTP.SetRequestHeader内容类型,application/xml的授权代码objHTTP.SetRequestHeader授权,授权代码objHTTP.Send“giving 200 Debug.Print objHTTP.Status”giving xml Debug.Print objHTTP.ResponseText Resp.LoadXML objHTTP.ResponseText您的代码为列表中的每个listNode的行提供错误91。ChildNode由于您已更新了数据,因此不需要将s转换为字母的子调用-因此我已将其删除。它适用于我使用Office 365 ProPlus v 15。我只能建议你将代码和xml文件复制到一个新问题中,也许其他人会知道。谢谢你,朋友,我得到了输出,我正在共享它。请粘贴它。我会将它标记为答案,因为我是从你的代码中获得的。它应该允许你-我以前粘贴了很多代码。