Cách tạo Công cụ Địa lý để Nhận Tọa độ Kinh độ và Vĩ độ cho các Địa chỉ bằng Excel VBA

Chia sẻ ngay bây giờ:

Theo dõi bài viết này và xây dựng công cụ địa lý của riêng bạn để bạn có thể nhận được kinh độ và vĩ độ cho một địa chỉ. Bộ chuyển đổi như thế này thường được sử dụng bởi các nhà môi giới bất động sản.

Tải xuống Ngay

Nếu bạn muốntart để sử dụng phần mềm càng sớm càng tốt, sau đó bạn có thể:

Tải xuống phần mềm ngay bây giờ

Còn không, nếu bạn muốn DIY, bạn có thể đọc nội dung bên dưới.

Hãy chuẩn bị GUI

Tất cả những gì bạn cần là một trang tính Excel duy nhất và bạn có thể đặt tên cho trang tính theo nhu cầu của mình. Trong ví dụ này, tôi đang sử dụng tên trang tính mặc định là “Sheet1”. Bước tiếp theo là thêm các tiêu đề cần thiết trên trang tính này. Bộ chuyển đổi vĩ độ, kinh độ cho kết quả chính xác cho địa chỉ mà chúng ta chuyển nếu đầu vào bao gồm ngoại ô, tiểu bang, postmã và quốc gia. Như trong hình, chuẩn bị tiêu đề. Hãy để chúng tôi thêm Vĩ độ và Kinh độ làm hai cột cuối cùng. Chúng tôi cũng cần một nút để cho phép người dùng thực hiện chuyển đổi. Vì vậy, hãy chèn một Hình dạng và tô màu cho nó để làm cho nó xuất hiện dưới dạng một nút.Chuẩn bị GUI

Hãy làm cho nó hoạt động

Tập lệnh được cung cấp ở đây phải được sao chép vào một mô-đun mới. Đừng quên lưu sổ làm việc của bạn dưới dạng tệp sổ làm việc đã bật macro. Sub “FindThis” phải được gắn vào nút mà chúng ta vừa tạo.

Hãy kiểm tra nó

Thêm địa chỉ cùng với thông tin khác vào các cột tương ứng. Nhấp vào nút để chạy macro sẽ hiển thị tọa độ vĩ độ và kinh độ cho tất cả địa chỉ được liệt kê trên trang tính. Macro sẽ start ở hàng 2 và sẽ tiếp tục chạy cho đến khi đến hàng trống.Thêm địa chỉ và nhấp vào nút

Cách thức học?

Với tập lệnh, chúng tôi đã tạo hai chức năng. Một để tìm nạp giá trị Lat và một để tìm nạp giá trị Dài. Sử dụng vòng lặp FOR, chúng tôi chuyển từng địa chỉ cho các hàm này và hiển thị kết quả trên màn hình.

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

Nếu bạn không nhận được kết quả phù hợp khi sử dụng tập lệnh, excel bị hỏng có thể là một lý do có thể xảy ra. Sau đó bạn có thể sử dụng Công cụ khôi phục tệp Excel như là DataNumen Excel Repair để sửa chữa Excel.

Giới thiệu tác giả:

Nick Vipond là một chuyên gia phục hồi dữ liệu trong DataNumen, Inc., công ty hàng đầu thế giới về công nghệ khôi phục dữ liệu, bao gồm vấn đề tài liệu sửa chữa và các sản phẩm phần mềm khôi phục triển vọng. Để biết thêm thông tin, hãy truy cập www.datanumennăm

Chia sẻ ngay bây giờ:

Được đóng lại.