Excel 使用VBA方法通过bing api获取距离不起作用
我试图通过vba创建一个方法,当我使用这个方法时,它会说#NAME?有时#值,原因是什么请引导 谢谢Excel 使用VBA方法通过bing api获取距离不起作用,excel,vba,excel-2007,bing-api,Excel,Vba,Excel 2007,Bing Api,我试图通过vba创建一个方法,当我使用这个方法时,它会说#NAME?有时#值,原因是什么请引导 谢谢 Public Function DISTANCE(start As String, dest As String, key As String) Dim firstVal As String, secondVal As String, lastVal As String firstVal = "http://dev.virtualea
Public Function DISTANCE(start As String, dest As String, key As String)
Dim firstVal As String, secondVal As String, lastVal As String
firstVal = "http://dev.virtualearth.net/REST/V1/Routes/Driving?wp.0="
secondVal = "&wp.1=destinations="
lastVal = "&optimize=time&routePathOutput=Points&distanceUnit=km&output=xml&key=" & key
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
URL = firstVal & start & secondVal & dest & lastVal
objHTTP.Open "GET", URL, False
objHTTP.SetRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.Send ("")
DISTANCE = Round(Round(WorksheetFunction.FilterXML(objHTTP.ResponseText, "//TravelDistance"), 3) * 1.609, 0)
End Function
三件事
你能发布一个输入示例来测试代码吗?距离(“纽约”、“迈阿密”、“API_键”)
Public Sub test()
Debug.Print GetDistance("new york,ny", "miami,fl", "key")
End Sub
Public Function GetDistance(ByVal start As String, ByVal dest As String, ByVal key As String) As Long
Dim firstVal As String, secondVal As String, lastVal As String, objHTTP As Object, url As String
firstVal = "http://dev.virtualearth.net/REST/V1/Routes/Driving?wp.0="
secondVal = "&wp.1=destinations="
lastVal = "&optmz=time&routePathOutput=Points&distanceUnit=km&output=xml&key=" & key
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
url = firstVal & Application.EncodeURL(LCase$(start)) & secondVal & Application.EncodeURL(LCase$(dest)) & lastVal
objHTTP.Open "GET", url, False
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.send
Dim xmlDoc As MSXML2.DOMDocument60 'reference to Microsoft XML via VBE>Tools>References
Set xmlDoc = New MSXML2.DOMDocument60
xmlDoc.LoadXML objHTTP.responseText
xmlDoc.SetProperty "SelectionNamespaces", "xmlns:r='http://schemas.microsoft.com/search/local/ws/rest/v1'"
GetDistance = Round(Round(xmlDoc.SelectSingleNode("//r:TravelDistance").Text, 3) * 1.609, 0)
End Function