ExcelVBAを使用して住所の緯度と経度の座標を取得する地理ツールを作成する方法

今すぐ共有:

この記事に従って、住所の緯度と経度の座標を取得できる独自の地理ツールを作成してください。 このようなコンバーターは、不動産ブローカーによって一般的に使用されています。

ダウンロード

ソフトウェアをできるだけ早く使い始めたい場合は、以下の方法があります。

今すぐソフトウェアをダウンロード

それ以外の場合、DIYをしたい場合は、以下の内容を読むことができます。

GUIを準備しましょう

必要なのは Excel シート 1 つだけで、シート名は必要に応じて付けることができます。この例では、デフォルトのシート名「Sheet1」を使用しています。次のステップは、このシートに必要なヘッダーを追加することです。緯度経度変換ツールは、入力に郊外、州、郵便番号、国が含まれている場合、渡された住所に対して正確な結果を返します。画像に示すように、ヘッダーを準備します。緯度と経度を最後の 2 つの列として追加しましょう。ユーザーが変換を実行できるように、ボタンも必要です。そこで、図形を挿入し、色を塗ってボタンのように表示させましょう。GUIを準備する

機能させましょう

ここで提供されるスクリプトは、新しいモジュールにコピーする必要があります。 ブックをマクロ対応のブックファイルとして保存することを忘れないでください。 サブ「FindThis」は、作成したばかりのボタンに添付する必要があります。

それをテストしましょう

住所とその他の情報をそれぞれの列に入力してください。ボタンをクリックするとマクロが実行され、シートに記載されているすべての住所の緯度と経度が表示されます。マクロは2行目から開始し、空の行に到達するまで実行されます。アドレスを追加してボタンをクリックします

どういう仕組みで、どうすればいいのですか?

スクリプトを使用して、XNUMXつの関数を作成しました。 XNUMXつはLat値をフェッチするためのもので、もうXNUMXつは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。は、以下を含むデータ復旧技術の世界的リーダーです。 ドキュメントの問題を修復します と見通し回復ソフトウェア製品。 詳細については、次のWebサイトをご覧ください。 WWW。datanumen.com

今すぐ共有:

コメントは締め切りました。