Cách chuyển đổi tọa độ UTM thành giá trị Vĩ độ và Kinh độ thông qua Excel VBA

Chia sẻ ngay bây giờ:

Với công cụ chuyển đổi UTM, bạn có thể dễ dàng chuyển đổi tọa độ UTM thành các giá trị Vĩ độ và Kinh độ. Tọa độ Universal Transverse Mercator (UTM) được tạo thành từ số vùng, hướng đông, hướng bắc và bán cầu (N/S).

Tải xuống Ngay

Nếu bạn muốn bắt đầu sử dụng phần mềm càng sớm càng tốt, 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

Như hình ảnh minh họa, hãy dành 4 hàng đầu tiên của bảng tính Excel để lưu trữ Hệ quy chiếu bản đồ, Vùng và Bán cầu. Ba giá trị này sẽ được sử dụng cho tất cả các hàng trong bảng tính Excel. Tại hàng thứ 5, bắt đầu từ Cột A, hãy thêm các giá trị này làm tiêu đề.

  1. DLS_KEY
  2. RM
  3. ĐÔNG
  4. PHÍA BẮC
  5. LATITUDE
  6. KIỂM TOÁN

Giá trị trên Cột A đến Cột D là đầu vào và đầu ra, tức là Vĩ độ và Kinh độ được hiển thị trên Cột E và FChuẩn bị GUI

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

Sao chép tập lệnh vào mô-đun mới và đính kèm macro vào nút trên Trang tính. Hãy đảm bảo rằng máy của bạn có Internet explorer. Nếu không có IE thì tập lệnh này sẽ không hoạt động.

Hãy kiểm tra nó

Khi chạy macro, bạn có thể dễ dàng theo dõi trạng thái từ thanh trạng thái của ứng dụng Excel. Vì chúng tôi đã tạo ra một số tạm dừng theo cách thủ công giữa mỗi chuyển đổi, macro sẽ mất thời gian để chuyển đổi tất cả tọa độ UTM của bạn thành giá trị Kinh độ và Kinh độ. Khi tất cả các bản ghi được xử lý, bạn có thể thấy thông báo Bật lên trên màn hình. Nếu macro không thể lưu dữ liệu trên trang tính thì có thể là do tệp Excel của bạn bị hỏng. Sửa file Excel bị hỏng và chạy lại tập lệnh.Theo dõi trạng thái từ thanh trạng thái của ứng dụng Excel của bạn

Một thông báo bật lên trên màn hình

Kịch bản:

Sub UTM_Converter()
    
' Place all your declarations here
    Dim i As Long
    Dim browobject As Object
    Dim obj1 As Object
    Dim obj2 As Object
    
    Set browobject = CreateObject("InternetExplorer.Application")
    
    browobject.Visible = False
    
'Process each row in the excle till the macro meets the last used row
    For r = 6 To 9
        
' Navigate to the URL to process data
        browobject.navigate "http://www.rcn.montana.edu/resources/converter.aspx"
        
' Inform Users about the status
        Application.StatusBar = "Macro is converting data. Please wait... Now at Row : " & r & " /// Total Rows : " & Sheets("UTM to LAT LON").Range("C" & Rows.Count).End(xlUp).Row
        
' As this is dynamic, we have to wait for the browobject to process input and generate output
        Do While browobject.Busy
            Application.Wait DateAdd("s", 1, Now)
        Loop
        Application.Wait (Now() + TimeValue("00:00:02"))
        
'Lets populate the form
        browobject.document.getElementById("mapDatum").Value = "1"
        browobject.document.getElementById("utmZone").Value = "14"
        browobject.document.getElementById("utmHemi").Value = "N"
'utmEasting
        browobject.document.getElementById("utmEasting").Value = Sheets("UTM to LAT LON").Range("C" & r).Value
'utmNorthing
        browobject.document.getElementById("utmNorthing").Value = Sheets("UTM to LAT LON").Range("D" & r).Value
        
        Set obj2 = browobject.document.getElementsByTagName("input")
        v_length = 0
        While v_length < obj2.Length
            If obj2(v_length).Value = "Convert Standard UTM" Then
                GoTo comehere
            End If
            v_length = v_length + 1
        Wend
        
        comehere:
        obj2(v_length).Click
' Wait while browobject loading...
        Do While browobject.Busy
            Application.Wait DateAdd("s", 1, Now)
        Loop
        Application.Wait (Now() + TimeValue("00:00:02"))
        
'Show converted data on the sheet
        Sheets("UTM to LAT LON").Range("F" & r).Value = browobject.document.getElementById("decimalLongitude").Value
        Sheets("UTM to LAT LON").Range("E" & r).Value = browobject.document.getElementById("decimalLatitude").Value
        
    Next r
        
' Show browobject
    browobject.Visible = False
    browobject.Quit
        
' Clean up
    Set browobject = Nothing
    Set obj1 = Nothing
    Set obj2 = Nothing
        
    Application.StatusBar = ""
'Inform User that entire process was completed
    MsgBox "Converted !", vbInformation, "UTM to LAT LON converter v1.0"
End Sub

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 sửa chữa tập tin doc 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.