Office: (Office 2007) Entfernung (Strecke) zwischen zwei PLZs berechnen

Helfe beim Thema Entfernung (Strecke) zwischen zwei PLZs berechnen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; von bst Morgen auch, versuche es vielleicht mal mit der OpenGeoDb, siehe Beitrag von EarlFred. Das erscheint mir sehr viel einfacher zu sein als... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von cybergnom1, 15. Oktober 2008.

  1. Entfernung (Strecke) zwischen zwei PLZs berechnen


    Leider bringt mir das nicht viel, da hier die Luftlinien-Entfernung zwischen den Orten berechnet wird. Ich brauche aber eine Berechnung der Fahrtstrecke mit dem Auto...


    Viele Grüße,
    der gnom
     
    Zuletzt von einem Moderator bearbeitet: 12. Januar 2021
    cybergnom1, 20. Oktober 2008
    #16
  2. so, nachdem ich nun versucht habe das FALK-Script zu automatisieren muss ich wohl diese Schiene aufgeben. Diese Methode funktioniert zwar für ein paar PLZs, aber knapp 1000 Datensätze lassen sich damit nicht berechnen. Zum Einen ist das ganze Verfahren (zumindest bei mir mit 20-25 Sek. pro Entfernungsberechnung) ziemlich langsam. Zum Anderen ist es leider nicht sehr verlässlich. Bei 35% - 50% nicht oder falsch berechneter Werte brauch ich garnicht erst anfangen...


    Was mich jetzt natürlich zu diesem Thema interessieren würde:
    Ich kann über das MSDNAA-Netz MS MapPoint kostenlos beziehen. Dort kann ich zwischen der 04er und 06er Version wählen, wobei bei der 06er Version nur Nordamerika-material dabei ist. Wer hat mit diesem Prog. schon Erfahrungen und kann mir sagen ob es sich lohnt, die 06er Version zu installieren und dann die deutschen Karten dazuzukaufen oder ob die 04er Version für mein Vorhaben ausreicht...


    Viele Grüße,
    der gnom
     
    cybergnom1, 20. Oktober 2008
    #17
  3. Hallo Anton,

    hast du eine Idee, ob und wie ich das Land angeben kann?

    IEDocument.getElementById("station[0].country").Value = "Dänemark"

    wird nicht akzeptiert.
    Wie könnte die zu beschickende Variable (hier ja ggf. ein DropDown-Feld) heißen und zu füllen sein?

    Gruß Peter
     
  4. Entfernung (Strecke) zwischen zwei PLZs berechnen

    Servus Peter,

    das select-Feld bei Falk für das Land hat den Namen "station.country.isoCode". Ein solches Select-Feld wählst man i.d.R. mit der Methode "selected" aus. Also sollte diese Anweisung:

    IEDocument.getElementById("station[0].country.isoCode").Selected = von_land

    das Ausgangsland festlegen.

    Problem daran ist allerdings, dass ich nicht weiß wie die Länder bei Falk codiert sind. Ich habs mal mit dem Standard ISO-CODE ( hier ) versucht aber das klappt leider nicht... Ich habe momentan auch leider nciht die Zeit den ganzen JS-Source von FALK zu durchforsten ob und wenn ja wo die Länder codiert werden...

    Vielleicht weiß das ja jemand...
     
    cybergnom1, 21. Oktober 2008
    #19
  5. Hallo cybergnom,

    danke erstmal für deinen Hinweis.
    Auf der Basis werde (kann) ich weiter testen.

    Gruß Peter

    Nachtrag:

    Mit IEDocument.getElementById("station[1].country.isoCode").Value = "DNK"
    funktioniert es. Für Deutschland ist DEU zu verwenden - also der 3-stellige Länder-Code.
     
  6. Hallo nochmal,

    noch eine Variante(etwa 5sec pro Berechnung,aber wie verlässlich ist das Ganze?..):

    Sub Entfernung()
    Dim IEApp As Object
    Dim IEDocument As Object
    Dim strURL As String
    von = InputBox("Geben Sie Start-PLZ ein.", "Start", "32791")
    If von = "" Then Exit Sub
    nach = InputBox("Geben Sie Ziel-PLZ ein.", "Ziel", "32756")
    If nach = "" Then Exit Sub
    starten = Timer
    Set IEApp = CreateObject("InternetExplorer.Application")
    IEApp.Visible = True
    IEApp.Navigate "MSN Deutschland | News, Wetter, Sport & Hotmail Login"
    Do: Loop Until IEApp.Busy = False
    Do: Loop Until IEApp.Busy = False
    Set IEDocument = IEApp.Document
    Do
    Loop Until IEDocument.ReadyState <> 4
    IEDocument.getElementById("RouteControl_StartZipText").Value = von
    IEDocument.getElementById("RouteControl_EndZipText").Value = nach
    IEDocument.all.RouteControl_AmbiguousButton.Click
    Application.Wait (Now + TimeValue("0:00:03"))
    Set iedoc = IEApp.Document
    Do
    Loop Until iedoc.ReadyState <> 4
    Debug.Print iedoc.Body.innerText
    strTeile = Split(iedoc.Body.innerText, vbCrLf)
    For i = LBound(strTeile) To UBound(strTeile)
    If InStr(1, strTeile(i), "Entfernung:", vbTextCompare) > 0 Then
    AppActivate "Microsoft Excel"
    MsgBox strTeile(i) & vbCr & (Timer - starten)
    End If
    Next
    IEApp.Quit
    Set IEDocument = Nothing
    Set IEApp = Nothing
    End Sub


    mfg Anton
     
  7. Hallo Anton,

    vielen vielen Dank für die Hilfe! Mit der neuen Variante hat es wunderbar funktioniert. Zwar wurden ca. 5% der Entfernungen nicht berechnet (was auch teilweise an falsch angegebenen PLZs lag) aber diese eben manuell nachzutragen war kein Problem!

    Gedauert hat das Ganze für ca. 1000 Kunden ungefähr 2 1/2 Stunden... Also alles bestens!

    Danke nochmal und viele Grüße,
    der gnom
     
    cybergnom1, 23. Oktober 2008
    #22
  8. Entfernung (Strecke) zwischen zwei PLZs berechnen

    Hallo zusammen,

    nun wollte ich mir Euer schönes Makro mal ansehen und leider bekomme ich es nicht zum Laufen. Option Explicit ist gesetzt bei mir und dann habe ich noch fehlende Variablen deklariert:

    Dim Starten As Date
    Dim von As Variant
    Dim nach As Variant
    Dim iedoc As Variant
    Dim strTeile As String
    Dim i As Integer

    Nun hängt sich der Code auf bei :

    For i = LBound(strTeile) To UBound(strTeile)

    Meldung: Kompilierungsfehler - Erwartet: Datenfeld

    Was tun?
     
  9. Am Besten den Array "strTeile" auch als einen solchen deklarieren... *wink.gif*
     
    Zuletzt von einem Moderator bearbeitet: 12. Januar 2021
    cybergnom1, 23. Oktober 2008
    #24
  10. Und warum machst du es nicht mit GoogleMaps? Da gibt es auch eine Beschreibung des APIs und wie man mit Querystring die URLs aufruft zur Routenplanung.

    Dietrich
     
    dherrmann, 24. Oktober 2008
    #25
  11. Danke sehr.
     
  12. Hi Dietrich,

    wie wäre es mit einem Beispiel?

    cu, Bernd
     
  13. Entfernung (Strecke) zwischen zwei PLZs berechnen

    vllt. nächste woche ;-), jetzt erst WE!!!

    Aber: ich habe mal den Code von euch hier ausprobiert- funktioniert bspw. nicht, wenn PLZ mit 0 beginnt... ich teste noch bissel weiter.

    Schönes WE-
    Dietrich
     
    dherrmann, 24. Oktober 2008
    #28
  14. '>' Neuer Versuch mit Google/Maps
    '>' =============================
    '>'
    '>' Steuerelemente:
    '>' CommandButton "cmdBerechnen"
    '>' TextBox "txtErgebnis"
    '>' TextBox "txtStart"
    '>' TextBox "txtZiel"
    '>'
    '>' =============================
    '>' Scheint zu funktionieren (toshni@web.de)

    Private Sub Form_Load()
    Me.Caption = App.EXEName
    End Sub

    Private Sub cmdBerechnen_Click()
    Dim VON$, NACH$, ERGEBNIS$, I%, F%, URL$
    Dim IE_App As Object, IE_Doc As Object

    VON = PrepText(Me.txtStart): If VON = "" Then Exit Sub
    NACH = PrepText(Me.txtZiel): If NACH = "" Then Exit Sub
    Set IE_App = CreateObject("InternetExplorer.Application")
    IE_App.Visible = False 'True
    IE_App.Navigate "Google Maps" & VON & "&daddr=" & NACH & "&output=html"

    Do: Loop Until IE_App.Busy = False
    Do: Loop Until IE_App.ReadyState = 4
    While IE_App.Busy: Wend
    While IE_App.Document.ReadyState "complete": Wend

    Set IE_Doc = IE_App.Document
    strTeile = Split(IE_Doc.Body.innerText, vbCrLf)
    For I = LBound(strTeile) To UBound(strTeile)
    If InStr(1, strTeile(I), "Fahrt:", vbTextCompare) > 0 Then
    ERGEBNIS = Trim(MyReplace(strTeile(I), "Fahrt:", ""))
    F = InStr(ERGEBNIS, " km")
    ERGEBNIS = MyReplace(ERGEBNIS, ",", ".")
    ERGEBNIS = Left(ERGEBNIS, F - 1) + " km"
    End If
    Next
    IE_App.Quit
    Set IE_Doc = Nothing
    Set IE_App = Nothing
    If Val(ERGEBNIS) = 0 Then MsgBox "Überprüfen Sie Ihre Eingaben", vbOKOnly
    txtErgebnis = ERGEBNIS
    End Sub

    Function PrepText$(ByVal Text$)
    Text = Trim(Text)
    Text = MyReplace(Text, " ", " ")
    PrepText = MyReplace(Text, " ", "+")
    End Function

    Function MyReplace$(ByVal Text$, ByVal Such$, ByVal Erse$)
    While InStr(Text, Such) > 0: Text = Replace(Text, Such, Erse): Wend
    MyReplace = Text
    End Function
     
  15. Hallo,
    habe mal die Routine ergänzt:
    Code:
    Allerdings, wenn ich Google benutze (da sind die Entfernungen wirklich genauer gegenüber msn, bei dem oftmals zu gleichen Eingaben verschiedene Werte berechnet werden) kriege ich immer beim .Quit einen Laufzeitfehler des IE, wo ich nicht weiß, wie er zu vermeiden ist.
    Aufruf: entf = getDistance("Google",...)
    oder Test im Direktfenster: Debug.Print getDistance(...)
    Übrigens, wenn man Google.com verwendet, sollte man zwingend den Ortsnamen noch angeben.

    Grüße-
    Dietrich
     
    dherrmann, 27. Oktober 2008
    #30
Thema:

Entfernung (Strecke) zwischen zwei PLZs berechnen

Die Seite wird geladen...
  1. Entfernung (Strecke) zwischen zwei PLZs berechnen - Similar Threads - Entfernung Strecke PLZs

  2. Leerzeilen entfernen

    in Microsoft Word Hilfe
    Leerzeilen entfernen: Hallo in die Runde, ich habe das Problem bzw. den Wunsch in einem DOC die Leerzeilen zu entfernen und das per Makro. Allerdings gelingt es nicht Hintergrund das DOC wird aus einer Dot-Datei...
  3. Tabelle in jedem Dokument

    in Microsoft Word Hilfe
    Tabelle in jedem Dokument: Hi, ich habe heute Mittag in einem Word-Dokument eine Tabelle eingefügt. Jetzt ist - quasi als Standard-Einstellung - in jedem neu geöffneten Dokument eine solche Tabelle[IMG] , die ich leider...
  4. Wie diese Trennlinie entfernen?

    in Microsoft Word Hilfe
    Wie diese Trennlinie entfernen?: Hallo allerseits, In einem Dokument wird mir diese unerwünschte Trennlinie automatisch eingefügt, wenn ich einen Text oder eine Abbildung in das Dokument einfüge oder innerhalb vom Dokument...
  5. Zeichen ab letzter Ziffer entfernen

    in Microsoft Excel Hilfe
    Zeichen ab letzter Ziffer entfernen: Hallo Ich brauche bitte eine Lösung für Excel 2010 ( wenn noch möglich ) und Excel 365 ( wenn möglich ohne VBA ). Zellinhalt in A1: -42/3_XK554/FXK oder 12AKL oder 12aB Ich möchte nun nach der...
  6. office365 Konto aus outlook 2021 entfernen

    in Microsoft Outlook Hilfe
    office365 Konto aus outlook 2021 entfernen: Ich habe ein office365 Konto bei Outlook 2021 hinzugefügt. Jetzt wollte ich dieses wieder vollständig entfernen. Dazu habe ich über Datei / Kontoeinstellungen /Kontoeinstellungen das Konto...
  7. Hintergrundfarbe kann nicht entfernt werden

    in Microsoft Word Hilfe
    Hintergrundfarbe kann nicht entfernt werden: Hallo, Ich bin keine Anfänger, sondern kenne mich leidlich gut aus. Allerdings scheint dies trickreich zu sein. Man öffne eine Powershell-ISE und eine neue Worddatei in der man ein paar Absätze...
  8. Outlook UTC Info aus Termin/Einladung entfernen

    in Microsoft Outlook Hilfe
    Outlook UTC Info aus Termin/Einladung entfernen: Hallo zusammen, wir haben folgende Problemstellung: Sobald wir eine Einladung (Termin) versenden, erscheint im Fließtext auch immer in leicht grauer Schrift das UTC Datum/Zeit. Das ist insofern...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden