VBA Excel:从XML文件读取数据
我有以下来自REST调用的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&
<?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文件复制到一个新问题中,也许其他人会知道。谢谢你,朋友,我得到了输出,我正在共享它。请粘贴它。我会将它标记为答案,因为我是从你的代码中获得的。它应该允许你-我以前粘贴了很多代码。