我从Google Map Distance Matrix API获得了一个XML响应文本,我必须将其读入Excel或从XML响应文本中输出某些信息。我只需要<Status>
中的值,<Text>
的持续时间和<Text>
的距离。
这是我的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
这是我的调试打印响应文本
<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>
答案 0 :(得分:2)
添加对&#34; Microsoft XML,v3.0&#34;的引用后在VBA中,您可以使用以下内容;
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