Warum ich das so mache
Access ist oft der operative Dreh- und Angelpunkt.
WordPress dagegen liefert Kundenportal, E-Commerce, Formulare.
Zwischen beiden Welten fehlt die Verbindung – zumindest, wenn man’s nicht selbst baut.
Ich nutze drei Tools:
- VBA fĂŒr Zugriff und Steuerung
- Power Automate fĂŒr einfache Event-Trigger
- REST fĂŒr saubere Kommunikation mit WordPress
Kombiniert ergibt das einen robusten, wartbaren Workflow.
1. Grundidee: Trigger, Zugriff, RĂŒckmeldung
Beispiel-Workflow:
- Kunde fĂŒllt Formular auf WordPress aus
- Power Automate erkennt neuen WP-Post (z. B. CPT „anfrage“)
- Power Automate ruft lokalen Access-Webhook oder REST-Endpunkt auf
- Access verarbeitet den Datensatz
- Ergebnis wird per REST zurĂŒck an WordPress geschrieben
2. Power Automate: Auslöser definieren
Ich nutze das WordPress Plugin „WP Webhooks“ oder „WP REST API Controller“.
Damit kommt ein HTTP-Trigger ins Spiel.
Beispiel: Neuer Beitrag mit CPT „anfrage“
Power Automate Trigger
- Typ: HTTP Request
- Methode: POST
- JSON-Schema passend zum WP-POST-Format
Dann leite ich den Payload weiter an meine Access-Instanz – z. B. ĂŒber ein kleines Lokalskript mit REST-Endpunkt (z. B. mit AutoHotkey, Caddy, oder VBA+Winsock).
3. Access: REST-Client per VBA
REST-Call an WordPress (POST)
Function SendeDatenNachWordPress(jsonPayload As String) As String
Dim http As Object
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "POST", "https://meineseite.de/wp-json/wp/v2/anfrage", False
http.setRequestHeader "Content-Type", "application/json"
http.setRequestHeader "Authorization", "Bearer " & HoleToken()
http.Send jsonPayload
SendeDatenNachWordPress = http.responseText
End Function
Token holen (einmalig manuell erzeugt)
Function HoleToken() As String
' Token aus Datei oder Registry laden
HoleToken = DLookup("wert", "einstellungen", "bezeichnung = 'wp_token'")
End Function
4. Datenmappen: WordPress â Access
Die Felder aus WordPress kommen oft als meta
oder acf
.
Ich nutze eine zentrale Tabelle zur Feldzuordnung:
wp_field | access_feld |
---|---|
vorname | kdn_vorname |
nachname | kdn_nachname |
telefon | kdn_telefon |
Dann baue ich daraus ein Mapping in VBA:
Function WPZuAccess(wpData As Dictionary) As Dictionary
Dim rs As DAO.Recordset
Dim result As New Dictionary
Set rs = CurrentDb.OpenRecordset("SELECT * FROM feldmapping")
Do While Not rs.EOF
If wpData.Exists(rs!wp_field) Then
result.Add rs!access_feld, wpData(rs!wp_field)
End If
rs.MoveNext
Loop
WPZuAccess = result
End Function
5. RĂŒckmeldung an WordPress
Wenn Access fertig ist, schicke ich optional eine Statusmeldung zurĂŒck.
Beispiel: CPT-Feld „status“ auf „erledigt“ setzen
Function UpdateWPStatus(id As Long, status As String)
Dim http As Object
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "POST", "https://meineseite.de/wp-json/wp/v2/anfrage/" & id, False
http.setRequestHeader "Content-Type", "application/json"
http.setRequestHeader "Authorization", "Bearer " & HoleToken()
Dim body As String
body = "{""fields"":{""status"":""" & status & """}}"
http.Send body
End Function
6. Extras: Zeitsteuerung aus Access
Ich habe in Access eine Tabelle „cronjobs“, die wie ein lokaler Job-Scheduler funktioniert:
name | letztausf | intervall_min | funktion |
---|---|---|---|
abruf_wp | 2025-05-30 08:30 | 30 | AbrufOffeneAnfragen |
Dann rufe ich im 5-Minuten-Takt per Timer:
If DateDiff("n", Nz(DLookup("letztAusf", "cronjobs", "name = 'abruf_wp'"), #1/1/2000#), Now) >= 30 Then
Call AbrufOffeneAnfragen
CurrentDb.Execute "UPDATE cronjobs SET letztausf = Now WHERE name = 'abruf_wp'"
End If
7. Fehlerhandling & Logging
Alle REST-Calls logge ich in einer Tabelle:
zeitpunkt | aktion | statuscode | response |
---|---|---|---|
2025-05-30 08:15 | Anfrage an WP | 200 | {„id“: 123, …} |
Und falls nötig, wird automatisch eine Mail generiert oder ein Retry gesetzt.
Du brauchst keine Mega-Architektur.
Mit Access, VBA, Power Automate und ein bisschen REST hast Du saubere, wartbare Workflows zwischen Backoffice und Website.
Keine Antworten