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.

Categories:

Tags:

No responses yet

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert