Excel 使用vba从Google Maps API获取数据
我试图让excel使用谷歌地图api提取驾驶时间和距离。我根本无法从中提取任何数据Excel 使用vba从Google Maps API获取数据,excel,vba,Excel,Vba,我试图让excel使用谷歌地图api提取驾驶时间和距离。我根本无法从中提取任何数据 Sub main() Dim a, b, i, Str As String Dim lineS As Variant On Error Resume Next 'Application.ScreenUpdating = False With CreateObject("WinHttp.WinHttpRequest.5.1") a = CStr(ThisWor
Sub main()
Dim a, b, i, Str As String
Dim lineS As Variant
On Error Resume Next
'Application.ScreenUpdating = False
With CreateObject("WinHttp.WinHttpRequest.5.1")
a = CStr(ThisWorkbook.Worksheets(1).Range("B3"))
Dim iRow As Long: iRow = ThisWorkbook.Worksheets(1).Range("G6500").End(xlUp).Row
For j = 5 To iRow
b = ThisWorkbook.Worksheets(1).Range("R" & j)
.Open "GET", "https://maps.googleapis.com/maps/api/distancematrix/json?origins=" & a & "&destinations=" & b & "&mode=driving&key=[hidden from this post]", False
.send
lineS = Split(.responsetext, vbLf)
linS = .response
For k = 25 To UBound(lineS)
If Trim(lineS(k)) = """distance"" : {" Then
Exit For
End If
Next k
ThisWorkbook.Worksheets(1).Range("s" & j) = lineS(k + 1)
ThisWorkbook.Worksheets(1).Range("t" & j) = lineS(k + 5)
Application.Wait (Now + TimeValue("0:00:01"))
Next j
End With
'Application.ScreenUpdating = True
End Sub
api在浏览器中的工作方式和外观如下:
{
"destination_addresses" : [ "Aberdeen AB11, UK" ],
"origin_addresses" : [ "Harwich CO12, UK" ],
"rows" : [
{
"elements" : [
{
"distance" : {
"text" : "899 km",
"value" : 898569
},
"duration" : {
"text" : "9 hours 32 mins",
"value" : 34292
},
"status" : "OK"
}
]
}
],
"status" : "OK"
}
非常感谢您的帮助。debug.print.responsetext产生了什么?我建议您使用JSON ParserHi,伙计们,您能告诉我如何在代码中尝试这些东西吗?我是一个修补匠,可以编辑其他人的代码,但经验不是很丰富。在lineS=Split(.responsetext,vbLf)之前,将debug.print.responsetext行放在debug.print.responsetext中,然后通过debug.print.responsetext生成什么将即时窗口(Ctrl+G)的输出添加到问题中?我建议使用JSON解析器,你能告诉我如何在代码中尝试这些东西吗?我是一个修补匠,可以编辑其他人的代码,但经验不是很丰富。在lineS=Split(.responsetext,vbLf)之前,将debug.print.responsetext行放入,然后通过将即时窗口(Ctrl+G)的输出添加到问题中