Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1952to1956
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

OpenRouteService Direction API über VBA nutzen

OpenRouteService Direction API über VBA nutzen
03.11.2023 13:56:54
Hoecker
Hallo zusammen,

Ich möchte die Distanz zwischen zwei Koordinaten (lat,lon) per OpenRouteService automatisch berechnen lassen. Dafür habe ich einen VBA Code gebastelt. Wenn ich diesen ausführe bekommt meine Request auch den Status 200, sprich es gibt eine erfolgreiche Antwort.

Wenn es aber jetzt daran geht, das Ganze per JsonConverter umzumünzen und auszulösen, bekomme ich ständig einen Laufzeitfehler "438: Objekt unterstützt diese Eigenschaft oder Methode nicht" in der JsonConverter Zeile. Vielleicht hat ja jemand eine Idee.

Darüber hinaus weiß ich jetzt nicht so ganz, wie ich am besten die Distanz aus der Json Antwort auslese.

Wenn sonst noch etwas benötigt wird, gerne eben melden.

Hier der bisherige VBA Code:

Sub GetTruckDistance()

Dim request As Object
Set request = CreateObject("MSXML2.ServerXMLHTTP.3.0")

Dim url As String
url = "https://api.openrouteservice.org/v2/directions/driving-car/json"

' Setzen der HTTP-Methode und Header
request.Open "POST", url, False
request.SetRequestHeader "Accept", "application/json, application/geo+json, application/gpx+xml, img/png; charset=utf-8"
request.SetRequestHeader "Authorization", "5b3ce3597851110001cf6248f4f6116a3fc647398202a91d7f11a224"
request.SetRequestHeader "Content-Type", "application/json; charset=utf-8"

' JSON-Daten für den POST-Request
Dim jsonData As String
jsonData = "{""coordinates"":[[8.681495,49.41461],[8.686507,49.41943]]}"

' Senden des POST-Requests
request.Send jsonData

' Verarbeiten der Antwort
Dim Distance As String
Dim response As Object
If request.Status = 200 Then ' Erfolgreiche Antwort (Statuscode 200)

MsgBox "Success!"
responseContent = request.ResponseText

' Hier können Sie responseContent weiter verarbeiten
Set response = JsonConverter.ParseJson(request.responseContent)

'Datenzugriff



Else
' Fehler beim Anfordern der Daten (Statuscode ist nicht 200)
MsgBox "Fehler beim Abrufen der Daten. Statuscode: " & request.Status
End If


End Sub


Und hier der Aufbau der Json Antwort von der API:

   -   {     

+ "bbox" : [ /* 4 items */ ] ,
+ "metadata" : { /* 5 items */ } ,
- "routes" : [
- {
- "summary" : {
"distance" : 1372.6 ,
"duration" : 292.79999999999995
} ,
+ "segments" : [ /* 2 items */ ] ,
+ "bbox" : [ /* 4 items */ ] ,
"geometry" : "ghrlHir~s@?BIC{ELgDo@aBa@}@I?sB?k@BwD?_JgAJgHt@I@]iHC?B?KuB]oFASg@wImAt@y@f@d@bJ" ,
+ "way_points" : [ /* 3 items */ ] ,
+ "legs" : [ /* no items */ ]
}
]
}

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: OpenRouteService Direction API über VBA nutzen
03.11.2023 14:13:57
Thomas
Schon mal ChatGPT befragt? ;o)
Hier die Antwort. Ob es hilft... musst du selbst probieren!

Dieser Fehler tritt wahrscheinlich auf, weil die Methode "ParseJson" nicht ordnungsgemäß aufgerufen wird.
Es gibt zwei Hauptprobleme in Ihrem Code:
1. Sie haben die Variable "responseContent" nicht deklariert. Sie sollten sie zuvor deklarieren, um sicherzustellen, dass sie vom richtigen Typ ist. Fügen Sie dies am Anfang Ihres Codes hinzu:
Dim responseContent As String


2. Die Methode "ParseJson" sollte auf der Variable "responseContent" aufgerufen werden, nicht auf "request.responseContent". Ändern Sie die betreffende Zeile wie folgt:
Set response = JsonConverter.ParseJson(responseContent)
Anzeige
AW: OpenRouteService Direction API über VBA nutzen
03.11.2023 14:56:34
Hoecker
Hey Thomas, danke für die Antwort. Da hätte ich auch selbst drauf kommen können. ChatGPT hat mir soeben beide Probleme gelöst. DANKE!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige