Ausgangslage: Access kennt Prozesse, ERP kennt den Bestand
👀 Access ist oft schneller, flexibler, leichter zu ändern.
😉 ERP-Systeme sind oft schwerfällig, aber zentral.
Du willst: Access soll Daten lesen, schreiben oder veredeln – ohne das ERP zu gefährden.
Also: Schnittstelle bauen. Nicht am ERP vorbei.
Und: Datenmodelle sauber trennen.
Variante 1: ODBC-Zugriff auf ERP-Datenbank
Viele ERP-Systeme basieren auf SQL Server, Oracle oder PostgreSQL.
ODBC-Verbindung erlaubt Zugriff aus Access.
Beispiel: Artikelstamm lesen
Dim cnn As Object, rs As Object
Set cnn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
cnn.Open "Driver={SQL Server};Server=SRV01;Database=ERP_DB;Trusted_Connection=Yes;"
rs.Open "SELECT ArtikelNr, Bezeichnung FROM dbo.Artikel WHERE Aktiv = 1", cnn
Do Until rs.EOF
Debug.Print rs!ArtikelNr & " - " & rs!Bezeichnung
rs.MoveNext
Loop
rs.Close: Set rs = Nothing
cnn.Close: Set cnn = Nothing
Nur Lesezugriff. Schreibzugriff nur nach Absprache mit ERP-Admin.
Variante 2: Datenexport aus dem ERP verarbeiten
ERP exportiert Daten als CSV, XML oder Excel.
Access liest diese regelmäßig ein.
Beispiel: Auftragsexport verarbeiten
DoCmd.TransferText acImportDelim, , "tmp_Aufträge", "C:\Import\erp_aufträge.csv", True
CurrentDb.Execute "INSERT INTO tblAufträge (AuftragsNr, Kunde, Datum) SELECT AuftragsNr, Kunde, Datum FROM tmp_Aufträge", dbFailOnError
Nach Verarbeitung: Archivieren oder löschen.
Variante 3: API-basierte Integration (z. B. SAP, weclapp, Dynamics)
Moderne ERP-Systeme bieten REST-APIs.
Access kann mit MSXML2.XMLHTTP oder Power Automate darauf zugreifen.
Beispiel: GET aus REST-API
Public Function HoleERPArtikel() As String
Dim http As Object
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "GET", "https://api.erp.de/v1/articles", False
http.setRequestHeader "Authorization", "Bearer geheimtoken123"
http.Send
HoleERPArtikel = http.responseText
End Function
Ergebnis ist JSON → weiterverarbeiten oder in Tabelle schreiben.
Beispiel: POST an ERP (Neuer Auftrag)
Public Function SendeNeuenAuftrag()
Dim http As Object
Set http = CreateObject("MSXML2.XMLHTTP")
Dim body As String
body = "{""kunde"":""4711"",""artikel"":""A-123"",""menge"":10}"
http.Open "POST", "https://api.erp.de/v1/orders", False
http.setRequestHeader "Authorization", "Bearer geheimtoken123"
http.setRequestHeader "Content-Type", "application/json"
http.Send body
End Function
Variante 4: ERP-Integration über Power Automate
Access → exportiert CSV oder JSON
Power Automate → importiert in Dynamics, SAP o. ä.
Antwort → in Datei schreiben oder in Tabelle zurückgeben
Vorteil: Kein Token-Handling in VBA nötig
Nachteil: Nur für Cloud-ERP praktikabel
Synchronisation mit Access: Wichtige Punkte
- Nie direkt in ERP-Tabellen schreiben (außer in sauber dokumentierte Staging-Tabellen)
- Keine Primärschlüssel verändern
- Alle Zugriffe protokollieren (Tabelle
tblSyncLog) - Nur veränderte Datensätze übertragen
- Konflikte vermeiden:
LetzteÄnderung,SyncStatus,GUIDsnutzen
Beispiel: Änderungsmarkierung in Access
If Me.Dirty Then
Me.SyncStatus = "Zu senden"
Me.LetzteÄnderung = Now()
End If
Später:
SELECT * FROM tblKunden WHERE SyncStatus = 'Zu senden'
Nur das wird ans ERP übertragen.
Typische Einsatzszenarien
- Preispflege in Access → Upload ins ERP
- Außendienstaufträge → ins ERP schreiben
- Artikel- und Lagerdaten aus ERP → lokal verarbeiten
- Rechnungskopien aus ERP → in Access auswerten
- Mahnläufe oder Freigaben in Access erfassen → ERP synchronisieren
Fazit für Entwickler
Access + ERP ist kein Widerspruch.
Du brauchst saubere Übergabepunkte, Logging, klare Zuständigkeiten.
Access kann helfen, das ERP schlanker zu machen – nicht zu ersetzen.

