Как да създадете географски инструмент за получаване на координати за географска ширина и дължина за адреси с Excel VBA

Споделете сега:

Следвайте тази статия и създайте свой собствен географски инструмент, с който можете да получите координатите за географска ширина и дължина за адрес. Преобразуватели като този често се използват от брокери на недвижими имоти.

Свали сега

Ако искате да start, за да използвате софтуера възможно най-скоро, тогава можете:

Изтеглете софтуера сега

В противен случай, ако искате да си направите сам, можете да прочетете съдържанието по-долу.

Нека подготвим GUI

Всичко, от което се нуждаете, е един лист на Excel и можете да го наименувате според вашите нужди. В този пример използвам името на листа по подразбиране „Sheet1“. Следващата стъпка е да добавите необходимите заглавки на този лист. Конверторът за географска ширина и дължина дава точен резултат за адреса, който минаваме, ако входът включва предградие, щат, стрostкод и държава. Както е показано на изображението, подгответе заглавки. Нека добавим Latitude и Longitude като последните две колони. Също така се нуждаем от бутон, който да позволи на потребителя да извърши преобразуването. Така че нека вмъкнем фигура и я напълним с цвят, за да изглежда като бутон.Подгответе GUI

Нека го направим функционален

Предоставеният тук скрипт трябва да бъде копиран в нов модул. Не забравяйте да запишете работната си книга като файл с работна книга с активиран макрос. Под “FindThis” трябва да бъде прикрепен към бутона, който току-що създадохме.

Да го тестваме

Добавете адрес заедно с друга информация в съответните колони. Щракнете върху бутона, за да стартирате макроса, който ще показва координати на ширина и дължина за всички адреси, изброени на листа. Макросът ще start на ред 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.

Въведение на автора:

Ник Випонд е експерт по възстановяване на данни в DataNumen, Inc., която е световен лидер в технологиите за възстановяване на данни, включително проблем за ремонт на документ и перспектива за възстановяване на софтуерни продукти. За повече информация посетете WWW.datanumen.com

Споделете сега:

Коментарите са забранени.