【发布时间】:2018-05-03 03:31:50
【问题描述】:
我正在尝试查找多个起点和终点之间的距离和旅行时间。出于某种原因,我的代码根本不起作用。没有错误,我只是没有任何输出。请参阅随附的 Excel 工作表图像。
Sub Origins_Destinations()
Dim a, b, i, Str As String
Dim lineS As Variant
On Error Resume Next
'Application.ScreenUpdating = False
With CreateObject("WinHttp.WinHttpRequest")
Dim iRow As Long: iRow = ThisWorkbook.Worksheets(1).Range("g65000").End(xlUp).Row
For j = 4 To iRow
b = ThisWorkbook.Worksheets(1).Range("b4" & j)
a = ThisWorkbook.Worksheets(1).Range("a4" & j)
.Open "GET", "https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=" & a & " &destinations= " & b & " &key=MY_KEY", False
.Send
lineS = Split(.ResponseText, vbLf)
For k = 25 To UBound(lineS)
If Trim(lineS(k)) = """distance"" : {" Then
Exit For
End If
Next k
ThisWorkbook.Worksheets(1).Range("c" & j) = lineS(k + 1)
ThisWorkbook.Worksheets(1).Range("d" & j) = lineS(k + 5)
Application.Wait (Now + TimeValue("0:00:01"))
Next j
End With
Application.ScreenUpdating = True
End Sub
有什么建议吗??????
【问题讨论】:
-
欢迎来到 Stack Overflow!请花点时间查看Tour 以及How to Ask 和minimal reproducible example 中的重要提示。我最近一直在使用 Google Maps API,我有一个计算点之间距离的函数,但我们首先需要的是一些示例 Data。如果不了解更多关于它正在查看的单元格中的内容,该代码并不是很有帮助....另外,我假设当您在运行之前用 actual Google Maps API 密钥替换
My API Key时代码,对吧? -
...另外,乍一看,我看到一些简单的错误,例如:`"&mode=walking&key=walking&key=MY API Kew"'。这显然是不对的。你自己看过代码吗?也许尝试从谷歌网站获取代码的新副本并重新开始构建 URL?
-
...最后一个建议,直到您以其他人能够帮助您的方式弄清楚 How to Ask 一个问题:您为什么不先让 URL 在您的浏览器中运行?尝试以编程方式解析它。例如,您可以将字符串
https://maps.googleapis.com/maps/api/distancematrix/json?origins=____ &destinations=____ &mode=walking&key=walking&key=MY API Kew粘贴到浏览器的地址栏中——在之后,您会发现缺少的内容,例如数据、密钥、可能不应该包含空格等。 Google 的 Maps API Developer 网站有大量信息。 -
感谢您的cmets,我已经更改了网址,但仍然没有输出。另外,我确实通过将 URL + API 放入浏览器中检查了它,它运行良好。
-
不,但我住在不列颠哥伦比亚省。这只是一个例子:)
标签: excel vba api google-maps google-maps-api-3