Kuidas luua geograafilist tööriista aadresside laius- ja pikkuskoordinaatide hankimiseks Excel VBA abil

Järgige seda artiklit ja looge oma geograafiline tööriist, mille abil saate aadressi laius- ja pikkuskraadi koordinaadid. Selliseid muundureid kasutavad kinnisvaramaaklerid tavaliselt.

Download Now

Kui soovite starKui soovite tarkvara võimalikult kiiresti kasutada, saate:

Laadige tarkvara kohe alla

Vastasel juhul, kui soovite ise teha, saate lugeda allpool olevat sisu.

Valmistame GUI ette

Kõik, mida vajate, on üks Exceli leht ja saate lehele oma vajaduse järgi nime anda. Selles näites kasutan lehe vaikenime "Sheet1". Järgmine samm on sellele lehele vajalike päiste lisamine. Laius- ja pikkuskraadi muundur annab täpse tulemuse edastatava aadressi kohta, kui sisend sisaldab eeslinna, osariiki, postkood ja riik. Valmistage päised ette, nagu pildil näidatud. Lisame kahe viimase veeruna laius- ja pikkuskraad. Vajame ka nuppu, mis võimaldab kasutajal teisendada. Nii et sisestame kujundi ja täidame selle värviga, et see ilmuks nupuna.Valmistage GUI ette

Teeme selle funktsionaalseks

Siin esitatud skript tuleks kopeerida uude moodulisse. Ärge unustage salvestada oma töövihikut makro toega töövihikufailina. Alam "FindThis" tuleks lisada nupule, mille just lõime.

Testime seda

Lisage aadress koos muu teabega vastavatesse veergudesse. Klõpsake nuppu, et käivitada makro, mis kuvab kõigi lehel loetletud aadresside laius- ja pikad koordinaadid. Makro start 2. real ja jätkab jooksmist, kuni jõuab tühja reani.Lisage aadress ja klõpsake nuppu

Kuidas see töötab?

Skriptiga oleme loonud kaks funktsiooni. Üks Lat-väärtuse ja teine ​​Long-väärtuse toomiseks. Kasutades FOR-tsüklit, edastame iga aadressi nendele funktsioonidele ja kuvame tulemuse ekraanil.

Script

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

Kui te ei saa skripti abil õigeid tulemusi, võib tõenäoline põhjus olla rikutud Excel. Seejärel saate kasutada Exceli faili taastamise tööriist nagu DataNumen Excel Repair Exceli parandamiseks.

Autori sissejuhatus:

Nick Vipond on andmete taastamise ekspert DataNumen, Inc., mis on maailmas juhtiv andmete taastamise tehnoloogiate, sealhulgas remont doc probleem ja Outlooki taastamise tarkvaratooted. Lisateabe saamiseks külastage www.datanumenCom

Kommentaarid on suletud.