Kako pretvoriti koordinate UTM v vrednosti zemljepisne širine in dolžine prek programa Excel VBA

Skupna raba zdaj:

S pretvornikom UTM lahko preprosto pretvorite koordinate UTM v vrednosti zemljepisne širine in dolžine. Univerzalno prečno Mercatorjevo koordinato (UTM) sestavljajo številka območja, vzhod, sever in polobla (N/S).

Prenesi zdaj

Če želite programsko opremo začeti uporabljati čim prej, lahko:

Prenesite programsko opremo zdaj

V nasprotnem primeru, če želite sami, lahko preberete spodnjo vsebino.

Pripravimo GUI

Kot je prikazano na sliki, pustite zgornje 4 vrstice Excelove preglednice za shranjevanje podatkov o zemljevidu, območja in poloble. Te 3 vrednosti bodo uporabljene za vse vrstice v Excelovi preglednici. V vrstici 5, začenši od stolpca A, jih dodajte kot glave.

  1. DLS_KEY
  2. RM
  3. VZHOD
  4. NIČ
  5. ZEMLJEPISNA ŠIRINA
  6. VDOLŽINA

Vrednost v stolpcih od A do stolpcev D je vnos, izhod, tj. zemljepisna širina in dolžina, pa se prikaže v stolpcih E in FPripravite GUI

Naj bo funkcionalen

Kopirajte skript v nov modul in pripnite makro na gumb na listu. Prepričajte se, da ima vaša naprava Internet Explorer. Brez IE ta skript ne bo deloval.

Preizkusimo

Ko zaženete makro, lahko preprosto spremljate stanje v vrstici stanja vaše aplikacije Excel. Ker smo med vsako pretvorbo ročno sprožili nekaj premora, si bo makro vzel čas, da pretvori vse vaše koordinate UTM v vrednosti širine in dolžine. Ko so vsi zapisi obdelani, lahko na zaslonu vidite pojavno sporočilo. Če makro ne more shraniti podatkov na liste, je to morda zaradi poškodbe vaše datoteke Excel. Popravite poškodovano datoteko Excel in znova zaženite skript.Sledite statusu v vrstici stanja vaše aplikacije Excel

Pojavno sporočilo na zaslonu

Scenarij:

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

Uvod avtorja:

Nick Vipond je strokovnjak za obnovitev podatkov v DataNumen, Inc., ki je vodilna na svetu na področju tehnologij za obnovitev podatkov, vključno z datoteka popravila in obeti za obnovitev programske opreme. Za več informacij obiščite www.datanumen.com

Skupna raba zdaj:

Komentarji so zaprti.