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, 14:26 (Dieser Beitrag wurde zuletzt bearbeitet: 08.10.2019, 14: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.