วิธีสร้างเครื่องมือทางภูมิศาสตร์เพื่อรับพิกัดละติจูดและลองจิจูดสำหรับที่อยู่ด้วย Excel VBA

แบ่งปันเลย:

ทำตามบทความนี้และสร้างเครื่องมือทางภูมิศาสตร์ของคุณเองซึ่งคุณจะได้รับพิกัดละติจูดและลองจิจูดสำหรับที่อยู่ ตัวแปลงแบบนี้มักใช้โดยนายหน้าอสังหาริมทรัพย์

ดาวน์โหลดตอนนี้

หากคุณต้องการเริ่มใช้งานซอฟต์แวร์โดยเร็วที่สุด คุณสามารถทำได้ดังนี้:

ดาวน์โหลดซอฟต์แวร์ทันที

มิฉะนั้นหากคุณต้องการ DIY คุณสามารถอ่านเนื้อหาด้านล่าง

มาเตรียม GUI กัน

คุณต้องการเพียงแค่ไฟล์ Excel ไฟล์เดียว และคุณสามารถตั้งชื่อไฟล์ได้ตามต้องการ ในตัวอย่างนี้ ฉันใช้ชื่อไฟล์เริ่มต้นว่า “Sheet1” ขั้นตอนต่อไปคือการเพิ่มส่วนหัวที่จำเป็นลงในไฟล์นี้ ตัวแปลงละติจูดและลองจิจูดจะให้ผลลัพธ์ที่แม่นยำสำหรับที่อยู่ที่เราป้อน หากข้อมูลที่ป้อนประกอบด้วยเขตย่อย รัฐ รหัสไปรษณีย์ และประเทศ ดังที่แสดงในภาพ ให้เตรียมส่วนหัว เรามาเพิ่มละติจูดและลองจิจูดเป็นสองคอลัมน์สุดท้าย เรายังต้องการปุ่มเพื่อให้ผู้ใช้สามารถทำการแปลงได้ ดังนั้นเรามาแทรกรูปร่างและเติมสีเพื่อให้ดูเหมือนปุ่มเตรียม GUI

มาทำให้มันใช้งานได้

ควรคัดลอกสคริปต์ที่ให้ไว้ที่นี่ไปยังโมดูลใหม่ อย่าลืมบันทึกสมุดงานของคุณเป็นไฟล์สมุดงานที่เปิดใช้งานมาโคร ส่วนย่อย“ FindThis” ควรติดอยู่กับปุ่มที่เราเพิ่งสร้างขึ้น

มาทดสอบกันเลย

เพิ่มที่อยู่และข้อมูลอื่นๆ ลงในคอลัมน์ที่เกี่ยวข้อง คลิกปุ่มเพื่อเรียกใช้มาโคร ซึ่งจะแสดงพิกัดละติจูดและลองจิจูดสำหรับที่อยู่ทั้งหมดที่แสดงในแผ่นงาน มาโครจะเริ่มต้นที่แถวที่ 2 และจะทำงานต่อไปจนกว่าจะถึงแถวว่างเพิ่มที่อยู่และคลิกปุ่ม

ใช้อย่างไร

ด้วยสคริปต์เราได้สร้างสองฟังก์ชัน หนึ่งสำหรับดึงค่า Lat และอีกค่าหนึ่งสำหรับดึงค่า Long การใช้ FOR loop เราจะส่งแต่ละแอดเดรสไปยังฟังก์ชันเหล่านี้และแสดงผลลัพธ์บนหน้าจอ

ต้นฉบับ

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. ซึ่งเป็นผู้นำระดับโลกด้านเทคโนโลยีการกู้คืนข้อมูล ได้แก่ ซ่อมแซมปัญหาเอกสาร และผลิตภัณฑ์ซอฟต์แวร์กู้คืน Outlook ดูข้อมูลเพิ่มเติมได้ที่ wwwdatanumenด้วย.

แบ่งปันเลย:

ความเห็นถูกปิด