Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1356to1360
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Skript zur Berechnung von EntfernungskilometernIII

Skript zur Berechnung von EntfernungskilometernIII
05.05.2014 10:42:46
EntfernungskilometernIII
Hallo VBA-Profis,
ich habe diese vorgefertigte Datei zur Berechnung von Entfernungskilometern (von User Tino vor geraumer Zeit programmiert) gefunden und leider funktioniert diese nicht mehr, weil folgende weiter unten fett markierte Anweisung keine Gültigkeit mehr hat. (URL-Daten wurden von Google-Maps wohl überarbeitet)
Hat jemand eine Lösung, wie man dieses sehr nützliche Programm auf den aktuellen Stand der Dinge bringen kann und es wieder zum Laufen bringt?
Bin euch wahnsinnig dankbar für jede Hilfe.
Unten der Programmiercode mit der Problemstelle (aus meiner Sicht!)
Datei anbei: https://www.herber.de/bbs/user/90486.xls
Option Explicit
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub LeseEntfernung()
Dim appIE As Object
Dim strStart As String, strHTML As String, tempHTML
Dim ZielAdress As Range, strErr As String
Dim A As Long, lngAnzahl As Long
If Range("A2") = "" Then Exit Sub
strStart = Range("A2")
Range("B2:C3", "B5:C" & Rows.Count).ClearContents
Set appIE = CreateObject("InternetExplorer.application")
appIE.Visible = False  'False ist unsichtbar    True ist Sichtbar
On Error GoTo Fehler:
For A = ActiveSheet.Shapes.Count To 1 Step -1
If InStr(ActiveSheet.Shapes(A).Name, "Karte") > 0 Then ActiveSheet.Shapes(A).Delete
Next A
For Each ZielAdress In Range("A5", Cells(Rows.Count, 1).End(xlUp))
A = 0
If ZielAdress > "" Then
appIE.Navigate "http://maps.google.de/maps?saddr=" & strStart & "&daddr=" & ZielAdress & "& _
output=html"
While Not appIE.ReadyState = 4 'Warte auf Webseite
Sleep (20)
A = A + 1
If A > 500 Then '10 Sekunden warten auf webseite
strErr = "Webseite konnte nicht geöffnet werden!"
GoTo Fehler
End If
DoEvents
Wend
Sleep (50)
tempHTML = appIE.Document.body.InnerHtml
If InStr(tempHTML, "ist unbekannt") > 0 Or InStr(tempHTML, "Meinten Sie") > 0 Then
ZielAdress.Offset(0, 2) = "unbekannt"
GoTo NächstePLZ
End If
If Range("B1") = "" Then
strHTML = tempHTML
'    Debug.Print tempHTML
If IsNumeric(strStart) Then
strHTML = Right$(strHTML, Len(strHTML) - InStr(strHTML, "sa dir=ltr>" & strStart) - 16) _
Else
strHTML = Right$(strHTML, Len(strHTML) - InStr(strHTML, "sa dir=ltr>" & strStart & "") - 1)
If InStr(strHTML, ">") > 0 Or InStr(strHTML, " 0 Then strHTML = ""
Range("C2") = Trim$(strHTML)
End If
strHTML = tempHTML
strHTML = Right$(strHTML, Len(strHTML) - InStr(strHTML, "Fahrt:") - 4)
strHTML = Left$(strHTML, InStr(strHTML, " – "))
strHTML = Trim$(Replace(strHTML, " ", " "))
ZielAdress.Offset(0, 1) = strHTML
strHTML = tempHTML
If IsNumeric(ZielAdress) Then
strHTML = Right$(strHTML, Len(strHTML) - InStr(strHTML, "sa dir=ltr>" & ZielAdress) - 16)
Else
strHTML = Right$(strHTML, Len(strHTML) - InStr(strHTML, "sa dir=ltr>" & ZielAdress & "") - 1)
If InStr(strHTML, ">") > 0 Or InStr(strHTML, " 0 Then strHTML = "kein Ort"
ZielAdress.Offset(0, 2) = Trim$(strHTML)
ErstelleButton (ZielAdress.Offset(0, 3).Address)
End If
NächstePLZ:
lngAnzahl = lngAnzahl + 1
Call MeinBalken(Cells(Rows.Count, 1).End(xlUp).Row - 4, lngAnzahl)
Next ZielAdress
Application.Calculate
If appIE > "" Then appIE.Quit
Set appIE = Nothing
UserForm2.Hide
MsgBox "Alle Entfernungen ermittelt", vbInformation, "Webdaten gelesen"
Exit Sub
Fehler:
UserForm2.Hide
If Err.Number  0 Then MsgBox Err.Description, vbCritical, "Fehler!!"
If strErr > "" Then MsgBox strErr, vbCritical, "Fehler!!"
If appIE > "" Then appIE.Quit
Set appIE = Nothing
End Sub
Sub MeinBalken(GesA As Long, Anzahl As Long)
Dim Breite As Single
Breite = (378 / GesA) * Anzahl
With UserForm2
.Label1.Width = Breite
.Repaint
End With
End Sub

LG Hans

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: hier mal eine neue Version
06.05.2014 12:44:41
Hans
Hallo Tino,
ja, es funktioniert, super! Herzlichen Dank dafür schonmal! Wie ich sehe, hast du Regex nun eingebunden. Darüber hatte ich in anderen Foren auch gelesen (der User-Name des Programmierers von Regex war glaube ich "Erfinder des Rades").
Was bei mir nicht funktioniert ist die Karte zu öffnen. Das Fenster öffnet sich zwar, aber ist dann nur grau und es wird eine Fehlermeldung angezeigt. (IE: Dieses Pop-Up von www.google.de wird aufgrund der verstärkten Sicherheitseinstellungen des IE geblockt).
1. Was muss ich tun, damit er mir das nicht mehr bringt und die Karte anzeigt?
Das Programm geht immer vom Feld A2 als Startort aus und nimmt die Zellen darunter in Spalte A DER REIHE NACH als Zielorte.
2. Was muss ich ändern, um A2 als Startort beizubehalten, aber nach der Kilometerabfrage des ersten Zielorts, diesen Zielort als Startort für die nächste Abfrage festzulegen. (eine Route mit Zwischenstationen). Er soll mir dann von München nach Hannover die Kilometer berechnen, dann von Hannover nach Hamburg, dann von Hamburg nach Berlin usw. bis die Route (Spalte A) abgeschlossen ist.
Mit PLZ soll es auch gehen, ziehe ich sogar vor, weil die PLZ eindeutig definiert ist.
3. Um das Programm zu perfektionieren soll er nun noch die Fahrtzeit (alles mit dem Auto) in Spalte B in Stunden und Minuten angeben. Ich weiß, dass man das mit Regex hinbekommt...aber wie?
Wenn du mir das hinbekommst, lieber Tino, dann versichere ich dir, dass ich dir für deine Riesenmühe eine Paypalspende oder Banküberweisung als Belohnung versende. Das wäre herausragend!
LG Hans

Anzeige
AW: hier mal eine neue Version
06.05.2014 13:00:56
Tino
Hallo,
die Fehlermeldung in der Kartenansicht müsste bestimmt im IE eingestellt werden.
schau mal hier:
https://support.google.com/maps/answer/21849?hl=de
An den anderen zwei Sachen schaue ich mal was sich machen lässt,
heute komme ich aber nicht mehr dazu, evtl. morgen.
Gruß Tino

eine neue Version
07.05.2014 08:34:16
Tino
Hallo,
versuch mal so, was noch nicht geht ist die gesamte Route als Karte
darzustellen da muss ich noch nach einer Link-Version suchen.
https://www.herber.de/bbs/user/90529.xls
Gruß Tino
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige