Ziel: Daten abrufen, senden oder synchronisieren über HTTP
Access kann APIs – wenn Du’s ihm beibringst.
Keine eingebauten Tools. Kein JSON-Parser von Haus aus.
Aber mit MSXML2.XMLHTTP
und etwas String-Gymnastik geht’s.
Du willst:
- Daten aus einer Web-API holen
- Datensätze senden
- REST-Services ansprechen
- OAuth umgehen, wenn’s geht
Ich zeig Dir, wie. Und wo’s aufhört.
Variante 1: Einfacher GET-Request
Public Function HoleDaten()
Dim http As Object
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "GET", "https://api.meinservice.de/kunden/4711", False
http.setRequestHeader "Accept", "application/json"
http.Send
MsgBox http.responseText
End Function
Du bekommst JSON zurück.
Weiterverarbeitung musst Du selbst machen – Zeile für Zeile.
Variante 2: POST mit JSON-Inhalt
Public Function SendeDaten()
Dim http As Object, json As String
Set http = CreateObject("MSXML2.XMLHTTP")
json = "{""name"":""Meier GmbH"",""email"":""info@meier.de""}"
http.Open "POST", "https://api.crmtool.de/kunden", False
http.setRequestHeader "Content-Type", "application/json"
http.setRequestHeader "Authorization", "Bearer DEIN_API_KEY"
http.Send json
MsgBox "Antwort: " & http.responseText
End Function
Du brauchst saubere Strings. Kein JSON-Encoder von Access – musst Du selbst bauen.
Variante 3: JSON zerlegen (primitive Variante)
Public Function LeseJSON(text As String, feld As String) As String
Dim pos1 As Long, pos2 As Long
pos1 = InStr(text, """" & feld & """:")
If pos1 = 0 Then Exit Function
pos1 = InStr(pos1, text, """") + 1
pos2 = InStr(pos1, text, """")
LeseJSON = Mid(text, pos1, pos2 - pos1)
End Function
Nicht schön. Aber für flaches JSON reicht’s.
Besser: Du nutzt eine externe JSON-Bibliothek wie VBA-JSON
.
Was Access mit APIs gut kann
- einfache GET-/POST-Requests
- APIs ohne Authentifizierung oder mit statischem Token
- REST in Kombination mit Power Automate (z. B. Webhook-Aufrufe)
- CSV-/JSON-Export vorbereiten und an externe APIs senden
- Inhalte aus Webservices anzeigen, speichern oder validieren
Was Access mit APIs nicht gut kann
- OAuth2 mit Redirects → kein Browser-Handling möglich
- Token-Refresh mit Verschlüsselung → sehr umständlich
- Datei-Uploads mit Multipart → machbar, aber schmerzhaft
- komplexe JSON-Parsing-Logik → braucht externe Parser
- große Datenmengen streamen → Memory-Probleme vorprogrammiert
- asynchrone Calls / Websockets → keine Unterstützung
Kurz gesagt:
Access kommt klar mit einfachen REST-APIs, wo Du GET/POST mit Key machst.
Alles, was Richtung OAuth, OpenID, oder Graph API geht – lieber über Middleware.
Best Practices
- JSON-String über
Replace(..., """", "\""")
absichern - Antwort immer loggen (
tblApiLog
) - API-Schlüssel in versteckter Tabelle oder Registry speichern
- Zeitstempel, Status und Rückmeldung mitprotokollieren
- Fehler abfangen (
http.Status <> 200
)
Beispiel: Access ruft externen Webhook auf
Public Sub WebhookAufruf()
Dim http As Object
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "POST", "https://n8n.meinefirma.de/webhook/neukunde", False
http.setRequestHeader "Content-Type", "application/json"
http.Send "{""kunde"":""4711"",""name"":""Müller""}"
End Sub
Power Automate, n8n oder Make können dann übernehmen.
Fazit für Entwickler
Access kann APIs.
Nicht komfortabel, nicht automatisch, nicht alles – aber genug für KMU-Alltag.
Wenn’s komplex wird: REST über Zwischenschicht, JSON parsern mit Add-In.
No responses yet