[英]How read certain XML data into Excel via VBA
I got a XML response text from Google Map Distance Matrix API that I have to read it into Excel or message out certain information from the XML response text. 我从Google Map Distance Matrix API获得了XML响应文本,我必须将其读入Excel或从XML响应文本中发出某些信息。 I will just need the Value in
<Status>
, <Text>
in duration and <Text>
in distance. 我只需要在值
<Status>
, <Text>
的持续时间和<Text>
的距离。
This is my VBA code: 这是我的VBA代码:
Sub Button1_Click()
Dim x As Long, y As Long
Dim htm As Object
Dim wb As Workbook
Dim ws As Worksheet
Dim TxtRng As Range
Dim num1 As String
Set wb = ActiveWorkbook
Set ws = wb.Sheets("Sheet1")
Set htm = CreateObject("htmlFile")
num1 = Cells(2, 2).Value
With CreateObject("msxml2.xmlhttp")
.Open "GET", "https://maps.googleapis.com/maps/api/distancematrix/xml?origins=sy8 2jp&destinations=" & num1 & "&mode=driving&language=en-GB&v=3&sensor=false&units=imperial", False
.send
htm.body.innerHTML = .responseText
Debug.Print .responseText (don't know how to debug print certain value)
MSGbox (.responseText)(or strip out certain value of response text)
End With
End Sub
This is my debug print response text 这是我的调试打印响应文本
<status>OK</status>
<origin_address UK</origin_address>
<destination_address>UK</destination_address>
<row>
<element>
<status>OK</status>
<duration>
<value>622</value>
<text>10 mins</text>
</duration>
<distance>
<value>8552</value>
<text>5.3 mi</text>
</distance>
</element>
</row>
</DistanceMatrixResponse>
After you add a reference to "Microsoft XML, v3.0" in VBA you can use the following; 在VBA中添加对“ Microsoft XML,v3.0”的引用后,可以使用以下内容;
Sub GetSingleNodes()
Dim objXML As MSXML2.DOMDocument
Dim strXML As String
Set objXML = New MSXML2.DOMDocument
Set htm = CreateObject("htmlFile")
num1 = Cells(2, 2).Value
With CreateObject("msxml2.xmlhttp")
.Open "GET", "https://maps.googleapis.com/maps/api/distancematrix/xml?origins=sy8 2jp&destinations=" & num1 & "&mode=driving&language=en-GB&v=3&sensor=false&units=imperial", False
.send
xmlresp = .responseText
End With
objXML.LoadXML (xmlresp)
Dim objElem As MSXML2.IXMLDOMElement
Status = objXML.SelectSingleNode("DistanceMatrixResponse/row/element/status").Text
If Status = "OK" Then
Duration = objXML.SelectSingleNode("DistanceMatrixResponse/row/element/status/duration/text").Text
Distance = objXML.SelectSingleNode("DistanceMatrixResponse/row/element/status/distance/text").Text
End If
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.