Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA - Strecken aus Google Maps auslesen?

VBA - Strecken aus Google Maps auslesen?
17.02.2009 08:37:00
Axel
Hallo,
ich habe folgende Aufgabenstellung:
Ich habe eine Liste mit 200 Start- und Zielorten, für diese Strecken muss ich die Länge herausfinden.
Da ich keine Lust habe das alles händisch zu tun, hatte ich die Hoffnung dies über VBA zu realisieren.
Beispiel:
Start/Ziel/Strecke
München/Hamburg/XXX
Allerdings habe ich
a. keine Ahnung ob das überhaupt funktioniert und
b. wie ich das mit VBA realisieren soll
Könntet ihr mir da evtl. weiterhelfen?
Gruß
Axel
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Strecken aus Google Maps auslesen?
17.02.2009 09:21:00
Axel
Hallo Bernd,
die letzte Seite habe ich auch schon gefunden, allerdings gelingt mir die Implementierung noch nicht so ganz:

Option Explicit
Sub Entfernung()
Dim IEApp As Object
Dim IEDocument As Object
Dim blnGefunden As Boolean
Dim RouteStr As String
Dim Von As String
Dim Nach As String
Dim Von_PLZ As String
Dim Nach_PLZ As String
Dim Von_Ort As String
Dim Nach_Ort As String
Dim Von_Straße As String
Dim Nach_Straße As String
Dim IEDoc As Object
Dim strTeile As Variant
Dim i As Long
Dim msg As String
blnGefunden = False
Von_PLZ = ""
Von_Ort = "Frankfurt"
Von_Straße = ""
Nach_PLZ = ""
Nach_Ort = "Köln"
Nach_Straße = ""
Von = Adresse(Von_Straße, Von_Ort, Von_PLZ)
Nach = Adresse(Nach_Straße, Nach_Ort, Nach_PLZ)
Set IEApp = CreateObject("InternetExplorer.Application")
IEApp.Visible = False
IEApp.Navigate "http://maps.google.com/maps? _
saddr="
& Von & "&daddr=" & Nach & "&hl=de"
Do: Loop Until IEApp.Busy = False
Set IEDocument = IEApp.Document
Set IEDoc = IEApp.Document
strTeile = Split(IEDoc.Body.innerText, vbCrLf)
'Debug.Print IEDoc.Body.innerText
For i = LBound(strTeile) To UBound(strTeile)
If InStr(1, strTeile(i), "Minuten", vbTextCompare) > 0 Then
blnGefunden = True
msg = "Von: " & Von & vbNewLine & "Nach: " & Nach & vbNewLine & strTeile(i)
End If
Next
If blnGefunden = False Then
MsgBox "Die Adresse konnte nicht decodiert werden." & vbCr & "Falsche PLZ?"
Else
MsgBox msg
End If
IEApp.Quit
Set IEDocument = Nothing
Set IEApp = Nothing
End Sub
Function Adresse(Street As String, City As String, ZIP As String) As String
Dim HStr As String
If Street  "" Then HStr = Street & ","
If ZIP  "" Then HStr = HStr & ZIP & " "
If City  "" Then HStr = HStr & City
Adresse = Trim(HStr)
End Function


Ich bekomme es nicht hin, dass die Eingabe in ein Textfeld erfolgt und dass dort dann "nur" dien Kilometer stehen.
Wenn ihr nen Tipp habt wäre ich dankbar, denn ich werde an diesem Problem wieder Stunden hängen. Aber immer noch besser als die Distanzen per Hand raus zu suchen :D
gruß
Axel

Anzeige
AW: VBA - Strecken aus Google Maps auslesen?
17.02.2009 09:53:00
bst
Hi Axel,
nimm die Funktion von Falkh, der kannst Du die benötigten Angaben via Parameter übergeben.
Das Ergebnis ist hier ein 3-zeiliger Text, nimm davon die 3. Zeile z.B. via Split(strErg,vbLf)(2)
cu, Bernd
AW: VBA - Strecken aus Google Maps auslesen?
17.02.2009 10:34:00
Axel
Hallo Bernd,
grundsätzlich würde deine Idee sicher funktionieren, aber ich bekomme leider keine Informationen, weil meine Eingaben google nicht passen ;)
Naja, dann muss ich wohl per Hand lostigern.
Gruß und Dank
axel
Anzeige
AW: VBA - Strecken aus Google Maps auslesen?
17.02.2009 10:56:00
bst
Hi Axel,
versuche das vielleicht mal so, 'semi-automatisch'.
Von-Bis gehört in Tabelle1 in die Spalten A und B ab Zeile 1.
HTH, Bernd
--
Option Explicit

Sub x()
    Dim IEApp As Object, i As Long
    
    Set IEApp = CreateObject("InternetExplorer.Application")
    IEApp.Visible = True
    
    With Sheets(1)
        For i = 1 To .Cells(1, 1).End(xlDown).Row
            .Cells(i, 3).Value = Entfernung(IEApp, .Cells(i, 1).Value, .Cells(i, 2).Value)
        Next i
    End With
    
    IEApp.Quit
    Set IEApp = Nothing
End Sub

Function Entfernung(IEApp As Object, ByVal von As String, ByVal bis As String) As String
    Dim arText As Variant
    Dim i As Long
    
    IEApp.Navigate "http://maps.google.com/maps?saddr=" & von & "&daddr=" & bis & "&hl=de"
    Do: Loop Until IEApp.Busy = False
    
    While True
        arText = Split(IEApp.Document.Body.innerText, vbCrLf)
        For i = 0 To UBound(arText)
            If InStr(1, arText(i), "Minuten", vbTextCompare) > 0 Then
                Entfernung = arText(i)
                Exit Function
            End If
        Next
        MsgBox "Bitte Route im IE manuell korrigieren"
    Wend
End Function


Anzeige
AW: VBA - Strecken aus Google Maps auslesen?
17.02.2009 15:47:00
Axel
Danke,
jetzt funktioniert es. Allerdings hat er nur 20% automatisch gefunden -.-
Gruß
Axel
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Google Maps in Excel einbinden und Entfernungen berechnen


Schritt-für-Schritt-Anleitung

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.

  2. Neues Modul erstellen: Klicke im Menü auf Einfügen und wähle Modul.

  3. Code einfügen: Kopiere den folgenden VBA-Code in das Modul:

    Option Explicit
    Sub Entfernung()
        Dim IEApp As Object
        Dim IEDocument As Object
        Dim blnGefunden As Boolean
        Dim RouteStr As String
        Dim Von As String
        Dim Nach As String
    
        Von = "Frankfurt"
        Nach = "Köln"
    
        Set IEApp = CreateObject("InternetExplorer.Application")
        IEApp.Visible = False
        IEApp.Navigate "http://maps.google.com/maps?saddr=" & Von & "&daddr=" & Nach & "&hl=de"
        Do: Loop Until IEApp.Busy = False
    
        Set IEDocument = IEApp.Document
        If InStr(1, IEDocument.Body.innerText, "Minuten", vbTextCompare) > 0 Then
            MsgBox "Die Entfernung von " & Von & " nach " & Nach & " wurde gefunden."
        Else
            MsgBox "Die Adresse konnte nicht gefunden werden."
        End If
    
        IEApp.Quit
    End Sub
  4. Makro ausführen: Schließe den VBA-Editor und führe das Makro aus, um die Entfernung zwischen den angegebenen Orten zu berechnen.


Häufige Fehler und Lösungen

  • Fehler: "Die Adresse konnte nicht gefunden werden."

    • Lösung: Überprüfe, ob die eingegebenen Orte korrekt sind und in Google Maps existieren. Achte darauf, dass du die genauen Namen verwendest.
  • Fehler: Internet Explorer öffnet sich nicht.

    • Lösung: Stelle sicher, dass der Internet Explorer auf deinem Computer installiert und nicht blockiert ist. Alternativ kannst du versuchen, den Code für einen anderen Browser anzupassen.
  • Fehler: Nur teilweise Ergebnisse.

    • Lösung: Um die Ergebnisse zu verbessern, versuche die Eingaben zu präzisieren. Füge Straßen- oder Postleitzahlen hinzu.

Alternative Methoden

  • Excel Google Maps API: Anstatt die Website zu scrapen, kannst du die Google Maps API verwenden, um genauere Ergebnisse zu erhalten. Hierbei musst du einen API-Schlüssel beantragen.
  • Excel-Add-Ins: Es gibt zahlreiche Add-Ins, die das Einbinden von Google Maps in Excel erleichtern und die Berechnung von Entfernungen automatisieren.

Praktische Beispiele

  • Beispiel 1: Berechnung der Entfernung zwischen zwei Städten

    • Du kannst die Variablen Von und Nach im Code anpassen, um verschiedene Strecken zu testen.
  • Beispiel 2: Automatisierung für eine Liste von Strecken

    • Erstelle eine Excel-Tabelle mit Start- und Zielorten in Spalte A und B und passe das VBA-Skript an, um die Werte aus diesen Zellen zu lesen.

Tipps für Profis

  • Verwendung von Schleifen: Wenn du mit vielen Start- und Zielorten arbeitest, implementiere eine Schleife, die durch die Zellen der Excel-Tabelle iteriert, um alle Distanzen automatisch zu berechnen.

    Dim i As Long
    For i = 1 To 10 'Anpassung an die Anzahl der Einträge
        ' Code zum Abrufen der Entfernungen hier
    Next i
  • Fehlerbehandlung: Implementiere eine Fehlerbehandlungsroutine, um Probleme beim Abrufen von Daten zu erkennen und die Ausführung des Makros nicht zu stoppen.


FAQ: Häufige Fragen

1. Wie kann ich Google Maps in Excel einbinden? Um Google Maps in Excel einzubinden, kannst du VBA verwenden, um die Google Maps Webseite zu scrapen oder die Google Maps API zu nutzen.

2. Kann ich auch die Entfernung in Kilometern anzeigen? Ja, du kannst den Code anpassen, um die Ausgabe so zu formatieren, dass die Entfernung in Kilometern angezeigt wird, anstatt nur die Zeit.

3. Welche Excel-Version benötige ich für diese Methoden? Die oben beschriebenen Methoden sollten in Excel 2010 und späteren Versionen funktionieren. Stelle sicher, dass VBA in deiner Version aktiviert ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige