Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
Google mal nach Google key beantragen. Der Key wird dann einfach in den Link integriert. Wurde hier im Thread vor Dir gefragt, lies einfach mal die letzten Beiträge vor Deiner Frage.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
04213
Nicht registrierter Gast
Hey, bin über google hier her gestoßen Der Code funktioniert nach kleinen Änderungen auch in Word... Ich möchte aber, das die Start und Zieladresse auf Basis von Textmarken übergeben wird... Code: strOAddr = "ActiveDocument.FormFields("PESTRASSE").Result & ", " & ActiveDocument.FormFields("PEPLZ").Result & " " & ActiveDocument.FormFields("PEORT").Result
Aber hier bekomme ich immer einen Fehler: Zitat:
INVALID_REQUEST Invalid request. Invalid 'origins' parameter.
Übergeben wird es aber richtig, denke ich: Zitat:http://maps.googleapis.com/maps/api/dist...sterstraße 18, 01234 Musterstadt&destinations=Deutschland, Musterzieln&language=de-DE&sensor=false Liegt es an den Textmarken? Wäre für jeden Tipp dankbar... Viele Grüße Erik
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
17.08.2016, 16:58
(Dieser Beitrag wurde zuletzt bearbeitet: 17.08.2016, 17:03 von schauan.)
Hallo Erik, wenn ich Deine gepostete Linkzeile korrekt in den Browser einfüge, bringt mir Google ein XML mit Not Found. Man muss erst den blauen Teil als Link kopieren und dann den Rest hinzufügen. PHP-Code: http://maps.googleapis.com/maps/api/distancematrix/xml?origins=Musterstraße 18, 01234 Musterstadt&destinations=Deutschland, Musterzieln&language=de-DE&sensor=false
Code: <?xml version="1.0" encoding="UTF-8"?> -<DistanceMatrixResponse> <status>OK</status> <origin_address/> <destination_address/> -<row> -<element> <status>NOT_FOUND</status> </element> </row> </DistanceMatrixResponse>
Das kann also nicht richtig sein Hast Du mal die Links verglichen, die Dir original und mit den Textmarkern ausgegeben werden? Sind die identisch? INVALID REQUEST bekomme ich nur, wenn ich nicht den korrekten Link eintrage - z.B. eine direkte Kopie Deines geposteten links. Der ist aber in der Ansicht eingekürzt ... Code: <?xml version="1.0" encoding="UTF-8"?> -<DistanceMatrixResponse> <status>INVALID_REQUEST</status> </DistanceMatrixResponse>
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
04213
Nicht registrierter Gast
Hallo André,
Danke für deine Antwort.
Meines Erachtens nach waren die Links identisch, aber auf das http habe ich nicht geachtet, das prüfe ich morgen früh aber nochmals sofort nach.
Danke erstmal und ich melde mich morgen.
Grüße
Erik
04213
Nicht registrierter Gast
Hallo und guten Morgen! also, ich habe jetzt verglichen und keinen Unterschied gemerkt... hier ist erstmal der gesamte Code: Code: Public Sub GoogleTest() 'Variablendeklarastionen Dim objXML As Object 'fuer XML-"String" Dim xmlDoc As Object Dim xmlNod As Object Dim erg As Double Dim Baustelle1 As String Dim Unterkunft As String Dim Wohnort As String Dim KMTGL As String Dim strOAddr As String Dim strDAddr As String
Baustelle1 = Trim(ActiveDocument.FormFields("Baustelle").Result) 'Unterkunft = ActiveDocument.FormFields("UEBSTRASSE").Result & ", " & ActiveDocument.FormFields("UEBPLZ").Result & " " & ActiveDocument.FormFields("UEBORT").Result Wohnort = Trim(ActiveDocument.FormFields("PESTRASSE").Result) & ", " & Trim(ActiveDocument.FormFields("PEPLZ").Result) & " " & Trim(ActiveDocument.FormFields("PEORT").Result) MsgBox Wohnort On Error GoTo errorhandler 'XML-Objecte instanzieren Set objXML = CreateObject("Msxml2.XMLHTTP") Set xmlDoc = CreateObject("MSXML2.DOMDocument") 'Wenn Instanzierung nicht nichts gebracht hat, dann If Not objXML Is Nothing Then 'OriginAddress ermitteln 'Hinweise: 'PLZ auch 4stellig moeglich strOAddr = Wohnort 'strOAddr = Replace(strOAddr, " ", "+") MsgBox strOAddr 'DestinationAddress ermitteln 'Hinweise: 'PLZ nicht 4stellig moeglich! strDAddr = "Deutschland, Dresden" 'strDAddr = Replace(strDAddr, " ", "+") MsgBox strDAddr 'zusammensetzen 'Abfrage oeffnen MsgBox "http://maps.googleapis.com/maps/api/distancematrix/xml?origins=" & strOAddr & "&destinations=" & strDAddr & "&language=de-DE&sensor=false" objXML.Open "POST", "http://maps.googleapis.com/maps/api/distancematrix/xml?origins=" & strOAddr & "&destinations=" & strDAddr & "&language=de-DE&sensor=false", False 'Abfrageheader objXML.setRequestHeader "Content-Type", "content=text/html; charset=UTF-8" 'Abfrage senden objXML.send 'Abfrageergebnis (Text) aufnehmen xmlDoc.LoadXML objXML.responseText MsgBox objXML.responseText 'Zeit auslesen /Value=Sekunden /Text = Minuten mit Angabe "Minuten" 'Set xmlNod = xmlDoc.SelectSingleNode("//row/element/duration/value") 'Zeit in Stundenzelle eintragen, Rueckgabewert / 86400 'MsgBox CDate(xmlNod.Text / 86400) 'Entfernung auslesen /Value=Meter /Text = Kilometer mit Angabe "km" Set xmlNod = xmlDoc.SelectSingleNode("//row/element/distance/value") 'Entfernung in km zelle eintragen, Rueckgabewert / 1000 erg = Round((CDec(xmlNod.Text / 1000)), 2) MsgBox erg 'Zeit in Stundenzelle eintragen, Rueckgabewert / 86400 'MsgBox CDate(xmlNod.Text / 86400) 'Ende Wenn Instanzierung nicht nichts gebracht hat, dann End If 'Fehlerbehandlung / Programmende errorhandler: 'Wenn Fehlernummer <> 0, dann Ausgabe Fehlermeldung If Err.Number <> 0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description 'XML-Objecte zuruecksetzen Set xmlNod = Nothing Set xmlDoc = Nothing Set objXML = Nothing End Sub
Der generierte Link: Code: MsgBox "http://maps.googleapis.com/maps/api/distancematrix/xml?origins=" & strOAddr & "&destinations=" & strDAddr & "&language=de-DE&sensor=false"
Ergebnis: Zitat:--------------------------- Microsoft Word --------------------------- http://maps.googleapis.com/maps/api/dist...chtestraße 4, 02906 Niesky&destinations=Deutschland, Dresden&language=de-DE&sensor=false --------------------------- OK --------------------------- Diesen Link kann ich 1:1 im Browser aufrufen und erhalte auch die XML-Datei. Trage ich statt den Textmarken die Adresse bei Hand als String ein, klappt es... Ergebnis 1:1 aus der MsgBox kopiert ohne Textmarken (nur die Startadresse): Code: --------------------------- Microsoft Word --------------------------- Fichtestraße 4, 02906 Niesky --------------------------- OK ---------------------------
und mit den Textmarken: --- beim posten fällt mir es jetzt auf... das Problem ist ß... ich müsste die Sachen sicher erstmal in UFT-8 umwandeln... ich such da mal was raus und melde mich, ob es daran lag/liegt... danke erstmal vg, Erik
04213
Nicht registrierter Gast
okay, läuft. Hier habe ich den Code von dem User danaseaman genommen. Jetzt klappt es, lag an Umlauten und "ß"... Kann man bei der Streckenberechnung noch einstellen, das die kürzeste Strecke genommen wird? Wenn ja, welcher Parameter ist das? Danke!
Registriert seit: 19.10.2016
Version(en): 2013
Hallo zusammen,
ich bin neu hier und habe die Diskussion ein wenig verfolgt, da ich auch ein ähnliches Problem habe wie der Ersteller dieses Beitrages.
Jedoch funktionieren die Lösung die vorgeschlagen wurden, bei mir leider nicht.
Kurz zur Erklärung:
Ich arbeite in einem Unternehmen mit mehreren Niederlassungen und Vermittlern, von denen unsere LKW´s in gewissen Umkreisen unterwegs sind. Jetzt benötige ich für unsere Vermittler eine Preisliste, die automatisch die Aufschläge für gewisse Liefergebiete berechnet.
Beispiel: Vermittler sitzt in München, nun wird das abgesprochene Liefergebiet in verschiedene Gebiete ( Liefergebiet A = alles im Umkreis von 25 km , Liefergebiet B = alles im Umkreis von 25,01 km - 50 km usw. ) aufgeteilt und mit verschiedenen Aufschlägen versehen.
Da die Vermittler sehen sollten welche Ortschaften sich innerhalb welches Liefergebietes befinden, dachte ich an eine Lösung mit Google Maps oder ähnliches. Jedoch habe ich bislang keine Vorschläge oder ähnliche Probleme im Netz gefunden, könnt Ihr mir hierbei vielleicht weiter helfen?
Mit freundlcihen Grüßen
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen, z.B. FreeMapTools.com --> RadiusAroundPoint oder PLZ-Umkreis.com
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 18.10.2016
Version(en): 2016
24.10.2016, 10:09
(Dieser Beitrag wurde zuletzt bearbeitet: 24.10.2016, 10:09 von Kubababa.)
Auf der Seite von Google Maps Distance Matrix API - Policies steht ausdrücklich: Zitat:Displaying a map
The Google Maps Distance Matrix API may only be used in conjunction with displaying results on a Google map. It is prohibited to use Google Maps Distance Matrix API data without displaying a Google map. Wie ist es möglich diese Richtlinie in Excel zu erfüllen? Ich habe diesen VBA Code als Vorlage genommen und auf meine Bedingungen angepasst: Code: 'Calculate Google Maps distance between two addresses Public Function GetDistance(start As String, dest As String) Dim firstVal As String, secondVal As String, lastVal As String firstVal = "http://maps.googleapis.com/maps/api/distancematrix/json?origins=" secondVal = "&destinations=" lastVal = "&mode=car&language=pl&sensor=false" Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP") URL = firstVal & Replace(start, " ", "+") & secondVal & Replace(dest, " ", "+") & lastVal objHTTP.Open "GET", URL, False objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" objHTTP.send ("") If InStr(objHTTP.responseText, """distance"" : {") = 0 Then GoTo ErrorHandl Set regex = CreateObject("VBScript.RegExp"): regex.Pattern = """value"".*?([0-9]+)": regex.Global = False Set matches = regex.Execute(objHTTP.responseText) tmpVal = Replace(matches(0).SubMatches(0), ".", Application.International(xlListSeparator)) GetDistance = CDbl(tmpVal) Exit Function ErrorHandl: GetDistance = -1 End Function
Habe ich einen Beitrag überlesen, indem bereits eine Lösung beschrieben wurde? EDIT: Reicht es aus einen Befehl ( URLCODIEREN), wie in der Vorlage Entfernung_googleMaps_ohne_VBA_ab_Excel2013 (Verweis zum Beitrag) einzufügen, um die Richtlinie zu erfüllen? EDIT 2: Wenn es wie nach dem ersten Edit ausreicht einen Hyperlink einzubauen, dann habe ich das Problem gelöst. Meine Lösung Die Start- und Zieladresse ist dabei wie folgt aufgebaut: [Straße Hausnummer]+[PLZ]+[Ort] Code: A1 | [Straße Hausnummer]+[PLZ]+[Ort] A2 | [Straße Hausnummer]+[PLZ]+[Ort] A3 | =HYPERLINK("https://www.google.com/maps/dir/"&A1&"/"&A2;"Verlinkung zu Google Maps")
Registriert seit: 15.11.2016
Version(en): 2010
Hallo zusammen,
ich bin noch ganz neu hier und bin insbesondere wegen dieses Threads beigetreten. Für meine Arbeit benötige ich häufig verschiedenste KM-Werte. Allerdings ist es in der Regel für den Containertransport.
Dieser beginnt in der Regel in einem Depot, geht dann zu Adresse (Laden / Entladen) und anschließend wieder in den Hafen/Depot. Daher bräuchte ich diese Funktion mit drei Punkten. Start - Zwischenziel - Ende
Hat jemand von euch zufällig genau soetwas schon "fertig". Ich muss teilweise Listen mit bis zu 100 oder 150 Orten einpflegen können und hierfür die KM-Werte verarbeiten. Da würde mir dieses Tool natürlich deutlich weiter helfen.
Vielen Dank schonmal.
|