ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 查询两城市间的实际公里数和时间

查询两城市间的实际公里数和时间

作者:绿色风 分类: 时间:2022-08-17 浏览:77
楼主
嘉昆2011
声明素材来自:
  1. http://club.excelhome.net/thread-1024222-1-1.html
问题描述:
A、B两列分别为货车的出发城市和到达城市,如何得知两个城市间的实际公里数和时间?


 

与原帖中的解决方案相比,本帖的解决方法具有以下特点:
1,速度相对会比原帖快一些,不会出现太长时间的“假死”现象;
2,利用Google Maps读取实际公里数和时间(原帖在百度地图中读取实际公里数,没有时间);
3,利用XML节点提取。

参考代码:
  1. Sub Test()
  2. Dim Arr
  3. Dim sOrigin As String, sDestination As String, sQuery As String
  4. Dim XMLRequest As XMLHTTP60
  5. Dim domDoc As DOMDocument60
  6. Dim DistanceNodes As IXMLDOMNodeList, DurationNodes As IXMLDOMNodeList
  7. Sheet1.Range("C2:D" & Sheet1.Cells(Rows.Count, 1).End(3).Row).ClearContents
  8. Set JS = CreateObject("MSScriptControl.ScriptControl")
  9. JS.Language = "JavaScript"
  10. Arr = Sheet1.Range("A2:B" & Sheet1.Cells(Rows.Count, 1).End(3).Row).Value

  11. For i = 1 To UBound(Arr)
  12. sOrigin = JS.Eval("encodeURI('" & Arr(i, 1) & "');")
  13. sDestination = JS.Eval("encodeURI('" & Arr(i, 2) & "');")
  14. sQuery = "http://maps.googleapis.com/maps/api/directions/xml?origin=" & sOrigin & "&destination=" & sDestination & "&sensor=false"

  15. Set XMLRequest = New XMLHTTP60
  16. XMLRequest.Open "GET", sQuery, False
  17. XMLRequest.send

  18. Application.Wait Now() + TimeValue("00:00:01")

  19. Set domDoc = New DOMDocument60
  20. domDoc.LoadXML XMLRequest.responseText

  21. On Error Resume Next
  22. Set DistanceNodes = domDoc.SelectNodes("//distance/text")
  23. Set DurationNodes = domDoc.SelectNodes("//duration/text")
  24. Sheet1.Range("C" & i + 1) = DistanceNodes.Item(DistanceNodes.Length - 1).Text
  25. Sheet1.Range("D" & i + 1) = DurationNodes.Item(DurationNodes.Length - 1).Text

  26. Next i

  27. Set DistanceNodes = Nothing
  28. Set DurationNodes = Nothing
  29. Set domDoc = Nothing
  30. Set XMLRequest = Nothing

  31. End Sub
最后效果:


 

附件:


城间距离.rar




2楼
水星钓鱼
学习
3楼
老糊涂
学习

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap