Paano Lumikha ng isang Geographic Tool upang Makakuha ng Mga Coordinate ng Latitude at Longitude para sa Mga Address na may Excel VBA

Ipamahagi ngayon:

Sundin ang artikulong ito at bumuo ng sarili mong tool sa heograpiya kung saan makukuha mo ang mga coordinate ng latitude at longitude para sa isang address. Ang mga converter na tulad nito ay karaniwang ginagamit ng mga Real estate broker.

Download na Ngayon

Kung nais mong start upang magamit ang software sa lalong madaling panahon, maaari mong:

I-download ang Software Ngayon

Kung hindi man, kung nais mong DIY, maaari mong basahin ang mga nilalaman sa ibaba.

Ihanda natin ang GUI

Ang kailangan mo lang ay isang Excel sheet at maaari mong pangalanan ang sheet ayon sa iyong pangangailangan. Sa halimbawang ito, ginagamit ko ang default na pangalan ng sheet na "Sheet1". Ang susunod na hakbang ay magdagdag ng mga kinakailangang header sa sheet na ito. Ang latitude, longitude converter ay nagbibigay ng tumpak na resulta para sa address na ipinapasa namin kung kasama sa input ang suburb, state, postcode at bansa. Gaya ng ipinapakita sa larawan, maghanda ng mga header. Idagdag natin ang Latitude at Longitude bilang huling dalawang column. Kailangan din namin ng button para payagan ang user na gawin ang conversion. Kaya't maglagay tayo ng isang Hugis at punan ito ng kulay upang ipakita ito bilang isang pindutan.Ihanda Ang GUI

Gawin nating pagpapaandar ito

Ang script na ibinigay dito ay dapat makopya sa isang bagong module. Huwag kalimutang i-save ang iyong workbook bilang macro enabled workbook file. Ang Sub "FindThis" ay dapat na naka-attach sa button na kakagawa lang namin.

Subukan natin ito

Magdagdag ng address kasama ng iba pang impormasyon sa mga kaukulang column. I-click ang button para patakbuhin ang macro na magpapakita ng lat at long coordinates para sa lahat ng address na nakalista sa sheet. Ang macro ay start sa row 2 at patuloy na tatakbo hanggang sa maabot nito ang isang walang laman na row.Magdagdag ng Address At I-click Ang Button

Paano ito gumagana?

Gamit ang script nakagawa kami ng dalawang function. Isa para sa pagkuha ng Lat value at isa pa para sa pagkuha ng Long value. Gamit ang isang FOR loop, ipinapasa namin ang bawat address sa mga function na ito at ipinapakita ang resulta sa screen.

Iskrip

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

Kung hindi ka nakakatanggap ng mga wastong resulta gamit ang script, ang sira na excel ay maaaring isang posibleng dahilan. Maaari mo nang gamitin Excel file recovery tool tulad ng DataNumen Excel Repair para ayusin ang Excel.

Panimula ng May-akda:

Si Nick Vipond ay isang dalubhasa sa pagbawi ng data sa DataNumen, Inc., na pinuno ng mundo sa mga teknolohiya sa pagbawi ng data, kasama ang ayusin ang problema doc at pananaw sa mga produkto ng software sa pagbawi. Para sa karagdagang impormasyon pagbisita www.datanumen. Sa

Ipamahagi ngayon:

Mga komento ay sarado.