Routenplaner mit VBA Excel programmieren
Author D.Selzer-McKenzie
Video: https://youtu.be/lbIPE6WY9Y8
Hier zeige ich Ihnen, wie Sie einen Routenplaner mit exakten
Kilometerständen usw. für ganz Europa programmieren können.
Den SourceCode VBA können Sie im Forum
herunterladen.
Hier der SourceCode VBA:
Private Sub cmdRoute_Click()
Dim strTemp As String
Dim objIE As Object
Dim strStart As String
Dim strDest As String
' Ausgabebereich
löschen
Me.Range("G8:G1000").Clear
' Start aus
Tabellenblatt auslesen zu einer
' Zeichenkette
zusammensetzen
strStart =
Me.Range("H2")
strStart = strStart
& ", " & Me.Range("H3") & " " &
Me.Range("H4")
strStart = strStart
& ", " & Me.Range("H5")
' Ziel aus
Tabellenblatt auslesen und zu einer
' Zeichenkette
zusammensetzen
strDest =
Me.Range("I2")
strDest = strDest
& ", " & Me.Range("I3") & " " &
Me.Range("I4")
strDest = strDest
& ", " & Me.Range("I5")
' Browser
Objektvariable erzeugen
Set objIE =
Me.objBrowser
' Pfad zum
Zwischenspeichern der HTML-Seite erzeugen
strTemp =
Environ("Temp") & "\MyRoute66.html"
' Vorhandene
HTML-Seite im Temp-Ordner löschen
If Dir(strTemp)
<> "" Then Kill strTemp
' HTML-Seite im
Temp-Ordner anlegen
Open strTemp For
Binary As #1
Put #1, ,
GetRouteHTML(strStart, strDest)
Close #1
' HTML-Seite
anzeigen
objIE.Navigate
strTemp
End Sub
Private Function GetRouteHTML( _
Optional Home As
String, _
Optional Dest As
String _
) As String
Dim i As Long
Dim strOutPut As
String
Dim x() As String
' HTML-Seite mit
Scriptcode erzeugen
ReDim x(1 To 86)
If Home =
"" Then
' Defaultwert
zum Testen
Home =
"Kaiserstrasse 1,61169 Friedberg, Germany"
End If
If Dest =
"" Then
' Defaultwert
Dest = "Am
Wehrturm 3 ,34134 Kassel , Germany"
End If
x(1) =
""
x(2) =
"
"
content=""text/html;charset=utf-8"">"
x(3) = ""
x(4) =
""
x(5) =
"
"mapcontrol/v4/mapcontrol.js"">"
x(6) =
""
x(7) =
""
x(80) =
""
x(81) = ""
x(82) =
"
"
x(83) =
"
"width:100%;"">
"
x(84) =
"
"
x(85) =
""
x(86) =
""
For i = 1 To 86
strOutPut = strOutPut
& x(i) & vbCrLf
Next
GetRouteHTML =
strOutPut
End Function
Private Sub cmdPrint_Click()
Dim
objMyBrowser As Object
Dim strBody As String
Dim varBody As Variant
Dim i As Long
On Error GoTo ErrorHandler
' Ausgabebereich
löschen
Me.Range("G8:G1000").Clear
' Browser
Objektvariable erzeugen
Set objMyBrowser =
Me.objBrowser
' HTML-Code
auslesen
strBody =
objMyBrowser.document.body.innerHTML
' Bereich mit der
Route
strBody =
Left(strBody, InStr(1, strBody, _
"
") - 1)
' Route übersetzen
und in ein Array umwandeln
strBody =
Replace(strBody, "
", "")
strBody =
TranslateRoute(strBody)
varBody =
Split(strBody, "
' Ausgeben
For i = 1 To
UBound(varBody)
Me.Cells(i + 7,
7) = Split(varBody(i), ">")(1)
Next
Exit Sub
ErrorHandler:
End Sub
Private Sub cmdTranslate_Click()
Dim
objMyBrowser As Object
Dim strBody As String
On Error Resume
Next
' Browser
Objektvariable erzeugen
Set objMyBrowser =
Me.objBrowser
' HTML-Text
auslesen
strBody =
objMyBrowser.document.body.innerHTML
' Übersetzen
strBody =
TranslateRoute(strBody)
' Zurückschreiben.
VORSICHT, eine weitere Navigation
' in der aktuellen
Session ist nicht möglich
objMyBrowser.document.body.innerHTML = strBody
End Sub
Private Function TranslateRoute( _
ByVal strBody As
String _
) As String
strBody =
Replace(strBody, "Start at", "Beginn")
strBody =
Replace(strBody, "Depart", "Losfahren")
strBody =
Replace(strBody, "Turn", "Abbiegen nach")
strBody =
Replace(strBody, " LEFT ", " LINKS ")
strBody =
Replace(strBody, " RIGHT ", " RECHTS ")
strBody =
Replace(strBody, "Take exit", "Abfahren")
strBody =
Replace(strBody, "At exit", "An der Abfahrt")
strBody =
Replace(strBody, "Take ramp", "Ausfahrt nehmen")
strBody =
Replace(strBody, "take ramp", "Ausfahrt nehmen")
strBody = Replace(strBody,
"Merge onto", "Wechseln in Richtung")
strBody =
Replace(strBody, "Arrive at", "Ankunft")
strBody =
Replace(strBody, " onto ", " Richtung ")
strBody =
Replace(strBody, " toward ", " nach ")
strBody =
Replace(strBody, "(northeast)", "(Nordost)")
strBody =
Replace(strBody, "(northwest)", "(Nordwest)")
strBody =
Replace(strBody, "(southeast)", "(Südost)")
strBody =
Replace(strBody, "(southwest)", "(Südwest)")
strBody =
Replace(strBody, "(north)", "(Norden)")
strBody = Replace(strBody,
"(east)", "(Osten)")
strBody =
Replace(strBody, "(south)", "(Süden)")
strBody =
Replace(strBody, "(west)", "(Westen)")
strBody =
Replace(strBody, " STRAIGHT ", " GERADEAUS ")
strBody =
Replace(strBody, " to stay on ", " auf die ")
strBody =
Replace(strBody, " to ", " auf die ")
TranslateRoute =
strBody
End Function
Keine Kommentare:
Kommentar veröffentlichen
Hinweis: Nur ein Mitglied dieses Blogs kann Kommentare posten.