wenn du Entfernungen und Fahrzeiten berechnen möchtest, dann ist Ditance Matrix API das Richtige. Wie ich das bei meinem Konto aber gesehen habe, bekommt man damit wohl auch automatisch Zugriff auf Geolocation und Geocoding; die funktionieren zumindestens mit meinem Ditance Matrix API.
Viel Erfolg!
Herzliche Grüße aus dem Rheinland Jörg
[Windows 10, Microsoft 365]
Folgende(r) 1 Nutzer sagt Danke an LuckyJoe für diesen Beitrag:1 Nutzer sagt Danke an LuckyJoe für diesen Beitrag 28 • Drolln
wollte mal eine Rückmeldung über den augenblicklichen Stand abgeben.
Ich habe die Lösung von @schauan von Beitrag #9 ausprobiert. Da funktioniert aber dann nur die erste Zeile (=Zeile Nr. 6) bei der ein Ergebnis (Spalte K Fahrstrecke) ausgegeben wird. Auch wird nur ein Ergebnis bei Spalte K Fahrstrecke ausgegeben. Die Spalten Breitengrad1, Längengrad1, Breitengrad2, Längengrad2 sowie Luflinie bleiben auch bei Zeile 6 ohne "Zwischenergebnis".
Den API-Key habe ich so verwendet wie in Beitrag #11 vorgeschlagen. Der sollte also da zumindest ein Ergebnis richtig ist auch stimmen.
Aktuell lasse ich über den Google Account noch prüfen wie viele Abfragen bisweilen aufgelaufen sind bei Google mit dem API-Key. Ich hab so die Vermutung das bei jeder "Enter"-Bestätigung alles neu berechnet wird und somit bei jeder "Enter"-Betätigung einige Abrufe getätigt werden. Hat sich ja vor der Umstellung zum API-Key ja auch selbständig bei Neueingabe immer aktualisiert.
wenn du mit sich wiederholenden Abfragen arbeitest, bietet sich Lösung #5 bzw. Teilen davon an. Dort werden die Abfragen und Ergebnisse lokal im temp-Verzeichnis abgespeichert. Vor einer Abfrage bei Google wird geprüft, ob die Abfrage schon einmal gemacht wurde und das Ergebnis dann eben aus dem lokalen Speicher genommen.
Der Code stammt aber nicht von mir, die Quelle ist im Kopf angegeben.
ich habe die Exceldatei (die den Code von Beitrag #5 enthält) zusammen mit meinem API Key abgespeichert.
Code:
Option Explicit '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' zuletzt geändert: 22.10.18 ' ' Sammlung von Funktionen für Google's Geocoding-API ' ' original: http://oco-carbon.com/2012/03/29/google-maps-and-excel-download/ ' ' ' ' Folgende 6 Funktionen stehen zur Verfügung: ' ' G_Adresse(Ortsangabe) : Adresse des übergebenen Ortes ' ' G_LAT(Ortsangabe) : Latitude des übergebenen Ortes ' ' G_LNG(Ortsangabe) : Longitude des übergebenen Ortes ' ' G_LATLNG(Ortsangabe) : "Latitude, Longitude" des übergebenen Ortes ' ' G_Dauer(Start, Ziel) : Dauer der Reise ' ' G_Entfernung(Start, Ziel): Entfernung zwischen Start und Ziel ' ' Parameter ' ' Ortsangabe: Kann ein Ortsname, eine PLZ oder ein LAT/LNG-Paar sein ' ' Requery : optionaler Parameter, um eine Nachschau über die API zu erzwingen ohne im Cache nachzusehen ' ' Windows API call, um Excel zu einer bestimmten Ausführungspause (ms) zu zwingen ' '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#If VBA7 Then ' wenn 64bit-Version von Excel Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) #Else ' wenn 32bit-Version von Excel Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) #End If
' Konstante als Basis für Google API calls Public Const WAIT_TIME = 50 ' Millisekunden
' Google-Maps API-Key (ab 08/2018 verpflichtend!) ' Public Const GoogleAPIKey = ""
Function G_Adresse(InputLocation As Variant, Optional Requery = False)
Dim Wait As Long Wait = WAIT_TIME
' Beim ersten Aufruf nicht warten G_Adresse = G_LATLNG(InputLocation, 4)
' Bei Verzögerungen Zeitintervall vergrößern While (G_Adresse = "OVER_QUERY_LIMIT") And (Wait > 4000) G_Adresse = G_LATLNG(InputLocation, 4, Wait) Wait = Wait * 2 Wend
' wenn weiterhin Fehlermeldungen, dann ist das Limit der Anfragen für diese IP-Adresse für heute erreicht If G_Adresse = "OVER_QUERY_LIMIT" Then G_Adresse = "OVER_HARD_QUERY_LIMIT" End If
End Function
Function G_LAT(InputLocation As Variant, Optional Requery = False) ' Gibt die Latitude einer Ortsangabe durch Googles Geocoding-API zurück
Dim Wait As Long Wait = WAIT_TIME
' Beim ersten Aufruf nicht warten G_LAT = G_LATLNG(InputLocation, 2)
' Bei Verzögerungen Zeitintervall vergrößern While (G_LAT = "OVER_QUERY_LIMIT") And (Wait > 4000) G_LAT = G_LATLNG(InputLocation, 2, Wait) Wait = Wait * 2 Wend
' wenn weiterhin Fehlermeldungen, dann ist das Limit der Anfragen für diese IP-Adresse für heute erreicht If G_LAT = "OVER_QUERY_LIMIT" Then G_LAT = "OVER_HARD_QUERY_LIMIT" End If
End Function
Function G_LNG(InputLocation As Variant, Optional Requery = False) ' Gibt die Longitude einer Ortsangabe durch Googles Geocoding-API zurück
Dim Wait As Long Wait = WAIT_TIME
' Beim ersten Aufruf nicht warten G_LNG = G_LATLNG(InputLocation, 3)
' Bei Verzögerungen Zeitintervall vergrößern While (G_LNG = "OVER_QUERY_LIMIT") And (Wait > 4000) G_LNG = G_LATLNG(InputLocation, 3, Wait) Wait = Wait * 2 Wend
' wenn weiterhin Fehlermeldungen, dann ist das Limit der Anfragen für diese IP-Adresse für heute erreicht If G_LNG = "OVER_QUERY_LIMIT" Then G_LNG = "OVER_HARD_QUERY_LIMIT" End If
End Function
Function G_LATLNG(InputLocation As Variant, Optional N As Long = 1, Optional Wait As Long, Optional Requery As Boolean = False) As Variant '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' Aufruf aus : unterschiedlichen Zellen (Funktion!) ' ' Aufruf über : ' ' Vorbereitung: Referenz zu Microsoft XML, v6.0 erforderlich (vgl. VBA-Editor: "Extras - Verweise")! ' ' Beschreibung: Der Parameter "N" gibt folgende Rückgabetypen an: ' ' N = 1 -> gibt Latitude, Longitude als "string" ' ' N = 2 -> gibt Latitude als "double" ' ' N = 3 -> gibt Longitude als "double" ' ' N = 4 -> gibt die Addresse als "string" ' ' Update vom 30.10.12 ' ' - gibt "#N/A error" zurück, wenn ein Fehler auftaucht ' ' - Cache nur verwenden, wenn notwendig ' ' - prüfen und versuchen, Fehler zu korrigieren ' ' - funktioniert auf Systemen mit Komma als Dezimaltrenner ' ' geändert : 22.10.18 ' '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Dim myRequest As XMLHTTP60 Dim myDomDoc As DOMDocument60 Dim addressNode As IXMLDOMNode Dim latNode As IXMLDOMNode Dim lngNode As IXMLDOMNode Dim statusNode As IXMLDOMNode Dim CachedFile As String Dim NoCache As Boolean Dim V() As String ' im original als "Variant"
On Error GoTo exitRoute G_LATLNG = CVErr(xlErrNA) ' gibt "#N/A Fehler" im Falle irgendeines Fehlers ReDim V(1 To 4)
' Prüfen und Eingabe löschen If WorksheetFunction.IsNumber(InputLocation) Or IsEmpty(InputLocation) Or InputLocation = "" Then GoTo exitRoute Sleep (Wait)
If NoCache Or Requery Then ' wenn kein Cache oder wenn Anfrage an Google erzwungen, dann Google fragen Sleep (Wait)
' XML-Daten von Google Maps API auslesen ' Alte Version bis 07/2018: ' myRequest.Open "GET", "http://maps.googleapis.com/maps/api/geocode/xml?address=" & InputLocation & "&sensor=false", False ' Neue Version ab 08/2018: myRequest.Open "GET", "https://maps.googleapis.com/maps/api/geocode/xml" & _ "?address=" & InputLocation & _ "&key=" & GoogleAPIKey & _ "&sensor=false", False myRequest.Send
' XML lesbar machen durch "XPath" Set myDomDoc = New DOMDocument60 myDomDoc.LoadXML myRequest.responseText
' XML lesbar machen durch "XPath" Set myDomDoc = New DOMDocument60 myDomDoc.LoadXML myRequest.responseText
' Prüfe den Status-Code der gecachten XLM-Datei (bei früheren Fehlern) Set statusNode = myDomDoc.SelectSingleNode("//status") If statusNode Is Nothing Then ' eine fehlerhafte Datei wurde möglicherweise gecached G_LATLNG = G_LATLNG(InputLocation, N, True) ' rekursiv untersuchen, um Fehler zu finden Exit Function ElseIf statusNode.Text <> "OK" Then ' eine Datei ohne Resultat wurde gecached G_LATLNG = G_LATLNG(InputLocation, N, True) ' rekursiv versuchen, Fehler zu löschen Exit Function End If
End If
Set statusNode = myDomDoc.SelectSingleNode("//status") If statusNode.Text = "OK" Then Set addressNode = myDomDoc.SelectSingleNode("//result/formatted_address") ' Örtlichkeit holen Set latNode = myDomDoc.SelectSingleNode("//result/geometry/location/lat") ' Latitude holen Set lngNode = myDomDoc.SelectSingleNode("//result/geometry/location/lng") ' Longitude holen V(1) = latNode.Text & "," & lngNode.Text V(2) = latNode.Text ' im original als double: V(2) = Val(latNode.Text) V(3) = lngNode.Text ' im original als double: V(3) = Val(lngNode.Text) V(4) = addressNode.Text G_LATLNG = V(N) If NoCache Then ' cache API-Antwort, falls erforderlich Call CreateFile(CachedFile, myRequest.responseText) End If Else G_LATLNG = statusNode.Text End If
exitRoute: Set addressNode = Nothing Set statusNode = Nothing Set latNode = Nothing Set lngNode = Nothing Set myDomDoc = Nothing Set myRequest = Nothing
End Function
Function G_Entfernung(Origin As String, Destination As String, Optional Requery As Boolean = False) As Variant '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' Aufruf aus : unterschiedlichen Zellen (Funktion!) ' ' Aufruf über : ' ' Vorbereitung: Referenz zu Microsoft XML, v6.0 erforderlich (vgl. VBA-Editor: "Extras - Verweise")! ' ' Beschreibung: Berechnet die Entfernung (km) zwischen "Origin" und "Destination" ' ' geändert : 22.10.18 ' '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Dim myRequest As XMLHTTP60 Dim myDomDoc As DOMDocument60 Dim distanceNode As IXMLDOMNode Dim statusNode As IXMLDOMNode Dim CachedFile As String Dim NoCache As Boolean
On Error GoTo exitRoute G_Entfernung = CVErr(xlErrNA) ' gibt "#N/A-Fehler" bei irgendeinem Fehler zurück
' Prüfen, ob Start/Ziel existieren If WorksheetFunction.IsNumber(Origin) Or IsEmpty(Origin) Or Origin = "" Then GoTo exitRoute If WorksheetFunction.IsNumber(Destination) Or IsEmpty(Destination) Or Destination = "" Then GoTo exitRoute
' Prüfe, ob es eine gecachete Version gibt CachedFile = Environ("temp") & "\" & Origin & "_" & Destination & "_Dist.xml" NoCache = (Len(Dir(CachedFile)) = 0)
Set myRequest = New XMLHTTP60
If NoCache Or Requery Then ' wenn keine gecachete Version existiert, Anfrage an Google ' Alte Version bis 07/2018: ' myRequest.Open "GET", "http://maps.googleapis.com/maps/api/directions/xml?origin=" & Origin & "&destination=" & Destination & "&sensor=false", False ' Neue Version ab 08/2018: myRequest.Open "GET", "https://maps.googleapis.com/maps/api/directions/xml" & _ "?origin=" & Origin & _ "&destination=" & Destination & _ "&key=" & GoogleAPIKey & _ "&sensor=false", False myRequest.Send Else ' sonst lese die Anfrage aus der Temp-Datei myRequest.Open "GET", CachedFile myRequest.Send Set myDomDoc = New DOMDocument60 myDomDoc.LoadXML myRequest.responseText Set statusNode = myDomDoc.SelectSingleNode("//status") If Not statusNode.Text = "OK" Then Call G_Entfernung(Origin, Destination, True) ' rekursiv versuchen, Fehler zu löschen End If End If
' Macht die XML lesbar mittels XPath Set myDomDoc = New DOMDocument60 myDomDoc.LoadXML myRequest.responseText Set statusNode = myDomDoc.SelectSingleNode("//status")
If statusNode.Text = "OK" Then If NoCache Then Call CreateFile(CachedFile, myRequest.responseText) ' API cachen, wenn erforderlich End If Set distanceNode = myDomDoc.SelectSingleNode("//leg/distance/value") ' Entfernung holen If Not distanceNode Is Nothing Then G_Entfernung = Val(distanceNode.Text) / 1000 End If Else G_Entfernung = statusNode.Text End If
exitRoute: Set statusNode = Nothing Set statusNode = Nothing Set distanceNode = Nothing Set myDomDoc = Nothing Set myRequest = Nothing
End Function
Function G_Dauer(Origin As String, Destination As String, Optional Requery As Boolean = False) As Variant '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' Aufruf aus : unterschiedlichen Zellen (Funktion!) ' ' Aufruf über : ' ' Vorbereitung: Referenz zu Microsoft XML, v6.0 erforderlich (vgl. VBA-Editor: "Extras - Verweise")! ' ' Beschreibung: Berechnet die Auto-Fahrzeit (hh:mm) für die Strecke zwischen "Origin" und "Destination" ' ' geändert : 22.10.18 ' '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Dim myRequest As XMLHTTP60 Dim myDomDoc As DOMDocument60 Dim durationNode As IXMLDOMNode Dim statusNode As IXMLDOMNode Dim CachedFile As String Dim NoCache As Boolean
On Error GoTo exitRoute G_Dauer = CVErr(xlErrNA) ' gibt "#N/A-Fehler" bei irgendeinem Fehler zurück
' Prüfen, ob Start/Ziel existieren If WorksheetFunction.IsNumber(Origin) Or IsEmpty(Origin) Or Origin = "" Then GoTo exitRoute If WorksheetFunction.IsNumber(Destination) Or IsEmpty(Destination) Or Destination = "" Then GoTo exitRoute
' Prüfe, ob es eine gecachete Version gibt CachedFile = Environ("temp") & "\" & Origin & "_" & Destination & "_Dist.xml" NoCache = (Len(Dir(CachedFile)) = 0)
Set myRequest = New XMLHTTP60
If NoCache Or Requery Then ' wenn keine gecachete Version existiert, Anfrage an Google ' Alte Version bis 07/2018: ' myRequest.Open "GET", "http://maps.googleapis.com/maps/api/directions/xml?origin=" & Origin & "&destination=" & Destination & "&sensor=false", False ' Neue Version ab 08/2018: myRequest.Open "GET", "http://maps.googleapis.com/maps/api/directions/xml" & _ "?origin=" & Origin & _ "&destination=" & Destination & _ "&key=" & GoogleAPIKey & _ "&sensor=false", False myRequest.Send Else ' sonst lese die Anfrage aus der Temp-Datei myRequest.Open "GET", CachedFile myRequest.Send Set myDomDoc = New DOMDocument60 myDomDoc.LoadXML myRequest.responseText Set statusNode = myDomDoc.SelectSingleNode("//status") If Not statusNode.Text = "OK" Then Call G_Dauer(Origin, Destination, True) ' rekursiv versuchen, Fehler zu löschen End If End If
' Macht die XML lesbar mittels XPath Set myDomDoc = New DOMDocument60 myDomDoc.LoadXML myRequest.responseText Set statusNode = myDomDoc.SelectSingleNode("//status") If statusNode.Text = "OK" Then If NoCache Then Call CreateFile(CachedFile, myRequest.responseText) ' API cachen, wenn erforderlich End If Set durationNode = myDomDoc.SelectSingleNode("//leg/duration/value") ' Reisedauer holen If Not durationNode Is Nothing Then G_Dauer = Val(durationNode.Text) / 86400 ' im original stand hier "1000" (???) End If End If
exitRoute: Set statusNode = Nothing Set durationNode = Nothing Set myDomDoc = Nothing Set myRequest = Nothing
End Function
Public Function URLEncode(StringVal As String, Optional SpaceAsPlus As Boolean = False) As String
Dim StringLen As Long Dim i As Long Dim CharCode As Integer Dim Char As String Dim Space As String
StringVal = ConvertAccent(StringVal) StringLen = Len(StringVal) If StringLen > 0 Then ReDim result(StringLen) As String Space = IIf(SpaceAsPlus, "+", "%20") For i = 1 To StringLen Char = Mid$(StringVal, i, 1) CharCode = Asc(Char) Select Case CharCode Case 45, 46, 48 To 57, 61, 65 To 90, 95, 97 To 122, 123, 125, 126 result(i) = Char Case 32 result(i) = Space Case 0 To 15 result(i) = "%0" & Hex(CharCode) Case Else result(i) = "%" & Hex(CharCode) End Select Next URLEncode = Join(result, "") End If
End Function
Function ConvertAccent(ByVal inputString As String) As String ' Code originally from Rick Rothstein, posted on ' http://www.jpsoftwaretech.com/remove-and-replace-special-characters-in-vba/ ' Handling of German characters contributed by Gabor
For x = 1 To Len(inputString) Position = InStr(AccChars, Mid(inputString, x, 1)) If Position Then If InStr("ß", Mid(inputString, x, 1)) Then inputString = Left(inputString, x) & "s" & Right(inputString, Len(inputString) - x) End If If InStr(DeAccChars, Mid(inputString, x, 1)) Then inputString = Left(inputString, x) & "e" & Right(inputString, Len(inputString) - x) End If Mid(inputString, x) = Mid(RegChars, Position, 1) End If Next ConvertAccent = inputString
End Function
Function CreateFile(FileName As String, Contents As String) As String ' Neue Datei erzeugen und Inhalt speichern
Dim fsT As Object
Set fsT = CreateObject("ADODB.Stream") With fsT .Type = 2 ' Streamtype ermitteln: text/string data speichern .Charset = "utf-8" ' Charset UTF-8 für die Quelltexte .Open ' Stream öffnen und Binärdaten schreiben .WriteText Contents ' Textdaten schreiben .SaveToFile FileName, 2 ' Binärdaten speichern End With Set fsT = Nothing
End Function
Sub DeleteFile(ByVal FileToDelete As String) ' Datei löschen
If FileOrDirExists(FileToDelete) Then SetAttr FileToDelete, vbNormal Kill FileToDelete End If
End Sub
Function FileOrDirExists(PathName As String) As Boolean ' Hinweis: gibt WAHR zurück, wenn Datei oder Pfad existiert, sonst FALSCH
Dim iTemp As Integer
On Error Resume Next
iTemp = GetAttr(PathName) Select Case Err.Number Case Is = 0 FileOrDirExists = True Case Else FileOrDirExists = False End Select
On Error GoTo 0
End Function
Die verschiedenen Spalten die dann Ergebnisse ausspucken sollten haben aber immer noch den gleichen Wert wie vorher.
Mache ich jetzt A) was falsch? Benötigt die Funktion einen Aufruf um zu funktionieren oder geht das komplett selbstständig nach Enter durch Eingabe? Ausführen/Debuggen lässt sich das ja nicht da ich hierfür einen Makronamen benötige. Oder ist B) der API Key lediglich für diese Anwendung falsch?
Mit der "alten" Exceltabelle habe ich ja auch eine Lösung mit dem API Key erhalten. Aber nur in einer Zeile.
hast du deinen API-Key an der richtigen Stelle eingefügt? In dem Beispielcode also Zeile 31:
Code:
Public Const GoogleAPIKey = "###" ' <-- statt "###" dein API-Code
Dann sollte es funktionieren. Probiere mal, in einer der Zellen F2 und anschließend RETURN zu drücken, womit du die Funktionsaufrufe auslöst. Bei mir berechnet er jede Zelle und wirft entsprechende Ergebnisse aus.
Habe jetzt nochmal nachgefragt wie die API erstellt wurde.
Kurze Erklärung zur Erstellung einer API: Unter Google "Google Maps Platform" eingeben und das erste Ergebnis dann anklicken. Oben rechts anmelden mit Benutzernamen/gmail.com-Email und Passwort. Im nächsten Schritt oben rechts links neben Anmelden "Konsole" anklicken. Nun erscheinen alle möglichen API-Keys (14 Stück) die man aktivieren kann (es nutzen alle den gleichen API-Key) - Directions API - Distance Matrix API - Geocoding API - Geolocation API - Maps Elevation API - Maps Embed API - Maps JavaScript API - Maps SDK for Android - Maps SDK for iOS - Maps Static API - Places API - Roads API - Street View Static API - Time Zone API Ich habe alle aktiviert und dann an der Exceldatei mittels F2 und Enter Abfragen gestellt. Da nach einer Stunde Aktivität nur Directions API, Distance Matrix API und Geocoding API Abrufe aufweisen konnten habe ich die anderen elf wieder deaktiviert. Dabei habe ich auch festgestellt, dass Spielereien in der Exceldatei um 9:00 Uhr nach erstmaliger Aktivierung des API-Keys (Directions API und Geocoding API) gegen 10:00 Uhr auch im Protokoll mit erfasst wurden. Als ersten API-Key hatte ich nur Distance Matrix API genutzt. Der Hinweis, dass die Geocoding API notwendig ist steht zum Beispiel im Code. Wenn man alle APIs jedoch nicht kennt kann man schlecht einen Zusammenhang herstellen.
Ergebnis nach jetzigem Stand: Es stehen teilweise Ergebnisse in den Zellen. Dies aber nur vereinzelt. Ich hab die erste Zelle auf weitere Zellen erweitert und mehrere Adressen eingegeben. Vielleicht könnte dies auch einer versuchen wie es bei ihm mit mehreren Zellen funktioniert.
Ich hatte nach einer Stunde bei... Direktions API: 153 Abfragen und 145 Fehler Distance Matrix API: 388 Abfragen und 385 Fehler (von vor paar Wochen aber auch was dabei) Geocoding API: 514 Abfragen und 494 Fehler (Sieht man unter der Google Plattform)
Vielleicht probiert jemand die Schritte aus und gibt Rückmeldung. Wäre dankbar.
08.10.2019, 15:26 (Dieser Beitrag wurde zuletzt bearbeitet: 08.10.2019, 15:29 von bentzer.)
Hallo zusammen,
ich versuche für eine Freundin, welche noch weniger Ahnung von Excel, hat eine Datei zu erstellen, womit sie durch einfach Eingabe einer Funktion (z.B. =Entfernung) die Entfernung bzw. die Fahrdauer berechnen kann.
Ich habe mich jetzt durch alle möglichen Foren gelesen und hoffe, dass man mir hier helfen kann.
Ich habe den Code aus #14 in VBA in ein Modul eingefügt und meinen eigenen API-Schlüssel eingetragen.
Nun wollte ich Probeweise einfach mal die Entfernung zwischen Berlin und München berechen (A1 und B1). In C1 habe ich die Formel =G_Entfernung eingeben (Origin=A1 und Destination=B1).
Mir wird dann folgender Fehler angezeigt: [url= Dateiupload bitte im Forum! So geht es: Klick mich! ]
klicke im Visual-Basic-Fenster (da, wo deine Fehlermeldung erscheint) auf "Extras" und dort auf "Verweise". Klick' dann in dem Fenster an "Microsoft XML, v6.0" und bestätige mit "OK". Dann wiederhole deine Suche noch einmal.