我想創建一個VBA腳本,讓我地理編碼我的地址數據庫。我一直在研究這個腳本幾天,我認爲有一段時間我不得不請專家提供一些建議。 因此,我想讓腳本訪問谷歌地圖網址並查找經度和緯度值。我設法從本地XML文檔中提取該信息,但我無法使用從Google地圖服務器讀取的XML。爲我工作的代碼如下:使用VBA自動地理編碼
Sub XMLread()
Dim odc As DOMDocument
Dim nde As IXMLDOMNode
Dim lat As IXMLDOMElement
Dim url As String
Set odc = New MSXML2.DOMDocument
url = "C:\~path~\address.xml"
odc.Load (url)
For Each nde In odc.SelectNodes("GeocodeResponse/result/geometry/location")
Set lat = nde.SelectSingleNode("lat")
Debug.Print lat.Text
Next
End Sub
這段代碼所做的就是打開一個XML文件,發現在調試窗口中的「緯度」,並打印出來的價值。我打算將結果放在電子表格中,但這不是問題。問題是直接從服務器提取數據。我使用下面的代碼:
Sub XMLerverRead()
Dim odc As DOMDocument
Dim nde As IXMLDOMNode
Dim lat As IXMLDOMElement
Dim url As String
url="https://maps.googleapis.com/maps/api/geocode/xml?address=1+Infinite+Loop,+Cupertino,+Santa+Clara,+California+95014&sensor=false"
Set odc = New MSXML2.DOMDocument
odc.async = False
odc.Load (url)
For Each nde In odc.SelectNodes("GeocodeResponse/result/geometry/location")
Set lat = nde.SelectSingleNode("lat")
Debug.Print lat.Text
Next
End Sub
而上述代碼不會返回任何內容,甚至不會發生錯誤。您能否幫我解決問題並告訴我如何解決這個問題?先謝謝你。
P.S.我是VBA新手,但我在這個問題上做了很好的研究。
我測試了你的代碼,它工作正常。 – CaBieberach
什麼......實際上,我將它複製到一個新的工作表中並且它工作正常。但它返回兩個值 - 37.3317055和37.3318200。這可能是因爲執行兩次的For循環。我能以某種方式擺脫那個循環嗎? – MartinUKPL
當然可以。使用Xpath來定義你想要的哪一個。 – CaBieberach