Wie funktioniert die native Integration von Power Automate-Flows per VBA-Aufruf?

Ziel: Access startet Flow – ganz ohne Umweg ĂŒber Outlook oder SharePoint

Power Automate kann mehr als Mails verschicken.
Du willst aus Access heraus einen Flow auslösen – z. B. fĂŒr:

  • E-Mail-Versand
  • Teams-Benachrichtigungen
  • Excel-Updates
  • API-Ketten
  • PDF-Generierung

Das geht – direkt aus VBA.
Mit Webhook. Und HTTP POST.

Variante 1: Power Automate-Flow mit Trigger „HTTP Request“

  1. Erstelle Flow in Power Automate.
  2. WĂ€hle als Trigger: Wenn eine HTTP-Anforderung empfangen wird.
  3. Definiere JSON-Schema (z. B.):
{
  "type": "object",
  "properties": {
    "kunde": { "type": "string" },
    "auftrag": { "type": "string" },
    "wert":   { "type": "number" }
  }
}
  1. Flow speichern.
  2. Du bekommst eine URL wie:
https://prod-45.westeurope.logic.azure.com:443/workflows/abc123.../triggers/manual/paths/invoke?api-version=2016-10-01&sp=...&sv=...&sig=...

Die brauchst Du gleich.

Variante 2: Aufruf per VBA (XMLHTTP)

Public Sub StarteFlow()
    Dim http As Object
    Set http = CreateObject("MSXML2.XMLHTTP")

    Dim url As String
    url = "https://prod-45.westeurope.logic.azure.com:443/workflows/abc123...&sig=..."

    Dim json As String
    json = "{""kunde"":""4711"",""auftrag"":""A-12"",""wert"":123.45}"

    With http
        .Open "POST", url, False
        .setRequestHeader "Content-Type", "application/json"
        .Send json
    End With

    If http.Status = 202 Or http.Status = 200 Then
        MsgBox "Flow gestartet."
    Else
        MsgBox "Fehler: " & http.Status & vbCrLf & http.responseText
    End If
End Sub

Kein Token nötig. Keine Authentifizierung.
Du rufst die URL direkt auf.
Sicherheit erfolgt ĂŒber die Signatur in der URL.

Variante 3: Flow mit RĂŒckmeldung

Du kannst dem Flow antworten lassen – z. B. ob alles geklappt hat.

Am Ende des Flows „Antwort senden“ hinzufĂŒgen:

{
  "status": "ok",
  "nachricht": "Mail wurde verschickt"
}

Dann in Access:

Dim antwort As String
antwort = http.responseText

Optional als JSON zerlegen (z. B. mit Split oder Regex).

Variante 4: Logging in Access einbauen

CurrentDb.Execute "INSERT INTO tblFlowLog (Zeitpunkt, Kunde, Auftrag, Antwortcode) VALUES (Now(), '4711', 'A-12', " & http.Status & ")"

So kannst Du spĂ€ter nachvollziehen, was wie oft lief – und was schief ging.

Best Practices

  • URL in Konfiguration speichern, nicht im Code
  • keine sensiblen Daten in Klartext-JSON
  • Flow mit „Request Body JSON Schema“ absichern
  • keine 100 gleichzeitigen Aufrufe → throttling
  • Fehlerlogging mit Zeitstempel und Statuscode

Was Du damit machen kannst

  • aus Access automatisch Dokumente erzeugen lassen
  • Teams benachrichtigen („Auftrag abgeschlossen“)
  • Dateien auf SharePoint hochladen
  • APIs von Drittanbietern mit Access-Daten fĂŒttern
  • mobile Prozesse starten

Fazit fĂŒr Entwickler

Power Automate ist die neue Shell.
Access ruft einfach per HTTP auf – und der Flow erledigt den Rest.
Kein COM, kein Outlook, keine Umwege.

Schlagwörter: