Excel VBA:通过单击获取Google Map纬度,经度

时间:2016-02-08 14:27:49

标签: excel excel-vba google-maps vba

我已经完成了:我必须通过在IE或默认浏览器中显示它来使用地址或位置或纬度和经度在Excel或浏览器中显示谷歌地图,我在excel中尝试了MS Web浏览器组件,但这是以兼容模式打开。我尝试使用需要安装的Microsoft power map。

我需要帮助:从打开的地图我需要选择位置/地址我需要在我的Excel工作表中更新纬度和经度值。

除了这种简单的方法,我需要向谷歌地图发送纬度和经度,同时我需要通过点击地图从地图接收纬度和经度。在excel Web浏览器中没有正在运行的脚本。

1 个答案:

答案 0 :(得分:2)

要解决这个问题,你必须克服两个障碍:

  1. 在浏览器触发的WebBrowser控件上查找事件 加载了一个新的URL。
  2. 从网址
  3. 解析Lat和Long

    值得庆幸的是,谷歌新推出的Map的URL非常适合解析...而且微软的WebBrowser控件内置了一些不错的钩子。

    您可能有一些类似于以下内容的代码:

    Sub webbrowsergo()
        WebBrowser1.Navigate2 ("https://www.google.com/maps/@39.1240533,-79.8562553,16z")
    End Sub
    

    我认为这会将网络浏览器控件发送到西弗吉尼亚州的某个地方。

    现在,在WorkSheet的VBA代码中,您可以使用WebBrowser_NavigateComplete2事件挂钩。一旦URL完全加载,此事件将触发。就像任何人移动地图或更改缩放一样。

    在工作表的VBA代码中,点击VBE顶部的第一个下拉框,选择您的WebBrowser控件(可能名为WebBrowser1或其他)。然后在第二个下拉框中,找到NavigateComplete2事件。

    它看起来像:

    enter image description here

    您的VBE将为您创建一个新子,您可以添加以下内容:

    Private Sub WebBrowser1_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
        Debug.Print "Navigation complete, URL=" & URL
    
        Dim strLat As String, strLong As String
    
        strLat = Split(URL, "@")(1)
        strLat = Split(strLat, ",")(0)
    
        strLong = Split(URL, ",")(1)
    
        Debug.Print strLat, strLong        
    End Sub
    

    所以,非常简单的东西。我们使用Navigate2Complete控件的WebBrowser事件,每次WebControl更新时都会触发该事件,并且有一个名为URL的好参数,其中包含刚刚加载到WebBrowser控件的URL。我们使用Split()来解析它并抓住Lat和Long。

    Debug.Print只是将变量写入VBE的立即窗口。如果您还没有,请转到查看>>立即窗口将其打开。显然,您可以更改它以将Lat和Long推送到工作表或其他内容。