Med UTM-konverter kan du nemt konvertere UTM-koordinater til Latitude- og Longitude-værdier. En UTM-koordinat (Universal Transverse Mercator) består af et zonenummer, en østlig, en nordlig og en halvkugle (N / S).
Hent nu
Hvis du vil begynde at bruge softwaren så hurtigt som muligt, kan du:
Ellers kan du læse indholdet nedenfor, hvis du vil gøre det selv.
Lad os forberede GUI
Som vist på billedet, skal du lade de øverste 4 rækker i Excel-arket være til Kortdatum, Zone og Halvkugle. Disse 3 værdier vil blive brugt til alle rækker i Excel-arket. I række 5, startende fra kolonne A, skal du tilføje disse som overskrifter.
- DLS_KEY
- RM
- ØSTLIGE
- NORD
- BREDDEGRAD
- LÆNGDE
Værdi på kolonner A til kolonne D indtastes, og output, dvs. bredde og længdegrad vises i kolonner E og F
Lad os gøre det funktionelt
Kopier scriptet til et nyt modul, og fastgør makroen til knappen på arket. Sørg for, at din maskine har Internet Explorer. Uden IE fungerer dette script ikke.
Lad os teste det
Når du kører makroen, kan du nemt spore status fra statuslinjen i din Excel-applikation. Da vi manuelt har induceret en pause mellem hver konvertering, tager makroen tid til at konvertere alle dine UTM-koordinater til Lat- og Long-værdier. Når alle poster behandles, kan du se en pop op-meddelelse på skærmen. Hvis makroen ikke er i stand til at gemme data på ark, kan det skyldes korruption i din Excel-fil. Ret korrupt Excel-fil og kør scriptet igen.
script:
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
Forfatter Introduktion:
Nick Vipond er en datagendannelsesekspert i DataNumen, Inc., som er verdens førende inden for datagendannelsesteknologier, herunder reparere doc-fil og Outlook Outlook-softwareprodukter. For mere information besøg www.datanumen.com


