PDF-Reports aus Access mit Daten aus WordPress-MySQL – komplett automatisch erzeugt und gemailt

Ziel

Du willst automatisiert PDF-Berichte aus Access erzeugen – mit Daten, die eigentlich im WordPress stecken.
Und die PDFs sollen regelmäßig per Mail rausgehen.
Ohne dass Du Excel aufmachst. Oder manuell irgendwas klickst.

Geht. Ich zeig Dir, wie.

Die Grundarchitektur

AufgabeTechnik
Datenquelle (WordPress)MySQL (über ODBC)
BerichtsgeneratorAccess Report (RPT)
PDF-ErzeugungDoCmd.OutputTo
MailversandOutlook VBA

1. ODBC-Verbindung zur WordPress-Datenbank

Installiere den MySQL ODBC Connector.
Dann erstellst Du eine DSN oder benutzt einen Connectionstring direkt.

Public Function WP_Query(sql As String) As DAO.Recordset
    Dim db As DAO.Database
    Set db = OpenDatabase("", False, False, _
        "ODBC;DRIVER={MySQL ODBC 8.0 Unicode Driver};" & _
        "SERVER=deinserver;DATABASE=wordpress;" & _
        "UID=wpuser;PWD=geheim;")

    Set WP_Query = db.OpenRecordset(sql)
End Function

Damit kannst Du dir z. B. alle registrierten Benutzer ziehen:

Dim rs As DAO.Recordset
Set rs = WP_Query("SELECT ID, user_login, user_email FROM wp_users WHERE user_registered >= CURDATE() - INTERVAL 7 DAY")

Alternativ: verknüpfte Tabellen über ODBC. Aber dann hast Du Probleme mit Schreibrechten und Performance.

2. Access-Report vorbereiten

Erstelle einen Bericht rpt_WPUserUebersicht.
Datenherkunft: temporäre Tabelle tbl_WPUserTemp.

Fülle diese Tabelle bei Bedarf mit den Daten aus MySQL:

Public Sub AktualisiereTempTabelle()
    CurrentDb.Execute "DELETE FROM tbl_WPUserTemp"

    Dim rs As DAO.Recordset
    Set rs = WP_Query("SELECT ID, user_login, user_email FROM wp_users")

    Do While Not rs.EOF
        CurrentDb.Execute "INSERT INTO tbl_WPUserTemp (WP_ID, Benutzer, Email) VALUES (" & _
            rs("ID") & ", '" & rs("user_login") & "', '" & rs("user_email") & "')"
        rs.MoveNext
    Loop
    rs.Close
End Sub

3. PDF erzeugen

Public Sub ErzeugePDFBericht(pfad As String)
    DoCmd.OutputTo acOutputReport, "rpt_WPUserUebersicht", acFormatPDF, pfad, False
End Sub

Pfad z. B.:

Dim dateiname As String
dateiname = "C:\Reports\WP_Benutzer_" & Format(Date, "yyyymmdd") & ".pdf"
Call ErzeugePDFBericht(dateiname)

4. PDF per Mail versenden (Outlook)

Public Sub SendeBerichtPerMail(pfad As String)
    Dim olApp As Object, olMail As Object
    Set olApp = CreateObject("Outlook.Application")
    Set olMail = olApp.CreateItem(0)

    With olMail
        .To = "admin@firma.de"
        .Subject = "Wöchentlicher WordPress-Report"
        .Body = "Im Anhang der aktuelle PDF-Report."
        .Attachments.Add pfad
        .Send
    End With
End Sub

Optional .Display, wenn Du’s vorm Absenden nochmal sehen willst.
Erfordert als Outlook „Classic“, das neue Outlook „New“ kann keine VBA Automatisierung mehr.

5. Komplettautomatisierung (Scheduler)

Finale Routine:

Public Sub Gesamtlauf()
    Call AktualisiereTempTabelle
    Dim pfad As String
    pfad = "C:\Reports\WP_Benutzer_" & Format(Date, "yyyymmdd") & ".pdf"
    Call ErzeugePDFBericht(pfad)
    Call SendeBerichtPerMail(pfad)
End Sub

Die Gesamtlauf-Prozedur kannst Du beim Access-Start triggern – oder über die Windows Aufgabenplanung mit /x macro starten.

Alternativen

  • PDF über PDFCreator oder andere Drucker-Treiber?
    Funktioniert, ist aber frickeliger.
  • Mail über SMTP statt Outlook?
    Geht mit CDO, ist aber fehleranfällig wegen SPAM-Filtern.
  • REST-API statt ODBC?
    Möglich – aber dann brauchst Du JSON-Parser in VBA oder einen Zwischenschritt.

Mein Fazit als Datenschäfer

Access + WordPress + PDF klingt erstmal wild.
Aber funktioniert. Stabil. Und automatisiert.

Wenn Du’s einmal aufgesetzt hast, läuft’s wie ein Schaf im Regenmantel:
Still, unauffällig, aber verdammt effizient.

Kategorien: