按照這篇文章構建您自己的地理工具,您可以使用該工具獲取地址的緯度和經度坐標。 像這樣的轉換器通常被房地產經紀人使用。
立即下載
如果您想盡快開始使用該軟體,那麼您可以:
否則,如果要DIY,可以閱讀以下內容。
讓我們準備GUI
您只需要一個 Excel 工作表,可以根據需要命名。在本例中,我使用預設的工作表名稱“Sheet1”。下一步是在該工作表中新增必要的標題。如果輸入的地址包含郊區、州/省、郵遞區號和國家/地區,經緯度轉換器就能給出準確的結果。如圖所示,準備標題。我們將經緯度作為最後兩列添加。我們還需要一個按鈕來允許用戶進行轉換。因此,讓我們插入一個形狀並填滿顏色,使其看起來像一個按鈕。
讓它發揮作用
此處提供的腳本應複製到新模塊中。 不要忘記將您的工作簿保存為啟用宏的工作簿文件。 Sub“FindThis”應該附加到我們剛剛創建的按鈕上。
讓我們測試一下
將地址及其他資訊加入對應的欄位。點擊按鈕運行宏,該宏將顯示表格中所有位址的經緯度座標。巨集將從第 2 行開始執行,直到遇到空行為止。
如何運作?
使用腳本,我們創建了兩個函數。 一個用於獲取 Lat 值,另一個用於獲取 Long 值。 使用 FOR 循環,我們將每個地址傳遞給這些函數並在屏幕上顯示結果。
腳本
Function GETLAT(v_address As String, v_suburb As String, v_state As String, v_postcode As Long)
Dim URl As String, lastRow As Long
Dim xmlHttp As Object, html As Object, objResultDiv As Object, objH3 As Object, link As Object
URl = "https://maps.googleapis.com/maps/api/geocode/xml?address=" & Application.WorksheetFunction.Substitute(v_address, " ", "+") & Application.WorksheetFunction.Substitute(v_suburb, " ", "+") & Application.WorksheetFunction.Substitute(v_state, " ", "+") & Application.WorksheetFunction.Substitute(v_postcode, " ", "+") & ",Australia"
Set xmlHttp = CreateObject("MSXML2.XMLHTTP")
xmlHttp.Open "GET", URl, False
xmlHttp.setRequestHeader "Content-Type", "text/xml"
xmlHttp.send
Set html = CreateObject("htmlfile")
html.body.innerhtml = xmlHttp.ResponseText
v_string = html.body.innerhtml
x = InStr(1, v_string, "<LAT>")
If x <> 0 Then
y = InStr(x + 5, v_string, "</LAT>")
GETLAT = Mid(v_string, x + 5, y - (x + 5))
End If
End Function
Function GETLNG(v_address As String, v_suburb As String, v_state As String, v_postcode As Long)
Dim URl As String, lastRow As Long
Dim xmlHttp As Object, html As Object, objResultDiv As Object, objH3 As Object, link As Object
URl = "https://maps.googleapis.com/maps/api/geocode/xml?address=" & Application.WorksheetFunction.Substitute(v_address, " ", "+") & Application.WorksheetFunction.Substitute(v_suburb, " ", "+") & Application.WorksheetFunction.Substitute(v_state, " ", "+") & Application.WorksheetFunction.Substitute(v_postcode, " ", "+") & ",Australia"
Set xmlHttp = CreateObject("MSXML2.XMLHTTP")
xmlHttp.Open "GET", URl, False
xmlHttp.setRequestHeader "Content-Type", "text/xml"
xmlHttp.send
Set html = CreateObject("htmlfile")
html.body.innerhtml = xmlHttp.ResponseText
v_string = html.body.innerhtml
x = InStr(1, v_string, "<LNG>")
If x <> 0 Then
y = InStr(x + 5, v_string, "</LNG>")
GETLNG = Mid(v_string, x + 5, y - (x + 5))
End If
End Function
Sub FindThis()
For r = 2 To 5
Range("F" & r).Value = GETLAT(Range("A" & r).Value, Range("B" & r).Value, Range("C" & r).Value, Range("D" & r).Value)
Range("G" & r).Value = GETLNG(Range("A" & r).Value, Range("B" & r).Value, Range("C" & r).Value, Range("D" & r).Value)
Next r
End Sub
如果您使用腳本沒有收到正確的結果,則可能的原因是 excel 損壞。 然後你可以使用 Excel文件恢復工具 如 DataNumen Excel Repair 修復Excel。
作者簡介:
Nick Vipond是的數據恢復專家 DataNumen,Inc.是數據恢復技術的全球領導者,包括 維修文件問題 和Outlook恢復軟件產品。 欲了解更多信息,請訪問 萬維網。datanumen.COM
