Home > Artikel > Ausgabe 4/2013 > Berichte per E-Mail verschicken, Teil I

Berichte per E-Mail verschicken, Teil I

Achtung: Sie sind nicht angemeldet. Wenn Sie Abonnent sind und sich anmelden, lesen Sie den kompletten Artikel, laden das PDF herunter oder probieren die Beispieldatenbank aus (sofern vorhanden).

Wenn Sie Berichte mit Inhalten wie Rechnungen, Lieferscheinen et cetera per E-Mail versenden möchten, brauchen Sie zweierlei: erstens die Umwandlung des Berichts in ein Format, das jeder Benutzer lesen kann – hier kommt eigentlich nur PDF in Frage. Und zweitens einen Automatismus, der diesen Bericht im PDF-Format an eine neue E-Mail anhängt, diese mit den Daten wie Empfänger, Betreff und Inhalt versieht und diese dann auch noch absendet. Dieser Artikel zeigt, wie es funktioniert.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1304_BerichtePerEMail.mdb.

Vorbereitungen

Wir nutzen in diesem Artikel die ab Access 2007 angebotenen Techniken zum Erstellen von PDF-Dokumenten. Wenn Sie die Lösung für Access 2003 oder älter anpassen möchten, finden Sie die entsprechenden Informationen im Artikel Bericht als PDF speichern (siehe Access [basics] 3/2012).

Die Beispieldatenbank baut auf der Datenbank zum Artikel Rechnungsbericht aus Ausgabe 6/2012 auf.

Rechnung als PDF speichern

Ausgangspunkt für die Erstellung eines PDF-Dokuments ist in unserem Beispiel das Formular frmBestellung, und hier speziell die neu angelegte Schaltfläche cmdPDFErstellen (siehe Bild 1). Diese Schaltfläche soll genau die Rechnung für die aktuell im Formular angezeigte Bestellung erzeugen.

Neue Schaltfläche zum Erstellen eines PDF-Dokuments auf Basis der Rechnung

Bild 1: Neue Schaltfläche zum Erstellen eines PDF-Dokuments auf Basis der Rechnung

Für die Schaltfläche hinterlegen Sie eine Ereignisprozedur, die durch das Ereignis Beim Klicken ausgelöst wird. Wählen Sie dazu im Eigenschaftsfenster für die Eigenschaft Beim Klicken den Eintrag [Ereignisprozedur] aus und klicken Sie auf die Schaltfläche mit den drei Punkten (...). Die nun im VBA-Editor erscheinende Prozedur ergänzen Sie wie in Listing 1.

Private Sub cmdPDFErstellen_Click()

     Dim strRechnung As String

     strRechnung = "Rechnung_" & Me.BestellungID & ".pdf"

     DoCmd.OpenReport "rptRechnung", WhereCondition:="BestellungID = " & Me!BestellungID, View:=acViewPreview

     DoCmd.OutputTo acOutputReport, "rptRechnung", acFormatPDF, CurrentProject.Path & "\" & strRechnung

     DoCmd.Close acReport, "rptRechnung"

End Sub

Listing 1: Erstellen eines PDF-Dokuments per Mausklick

Die Prozedur erledigt die folgenden Schritte:

  • Zusammenstellen eines Dateinamens nach dem Schema Rechnung_.pdf
  • Öffnen der Rechnung für den aktuellen Bestelldatensatz. Dazu wird als WhereCondition ein Ausdruck wie BestellungID = übergeben.
  • Die nun geöffnete Rechnung wird mit der OutputTo-Methode des DoCmd-Objekts als PDF-Dokument gespeichert.
  • Schließlich wird der Bericht wieder geschlossen.

Die DoCmd.OutputTo-Methode ist einen genaueren Blick wert. Sie erwartet die folgenden Parameter:

  • ObjectType: Art des zu exportierenden Objekts, hier acOutputReport für einen Bericht
  • ObjectName: Name des zu exportierenden Objekts, hier der Name des Berichts (rptRechnung).
  • OutputFormat: Format, in dem das Objekt gespeichert werden soll – hier acFormatPDF. Die verschiedenen Konstanten können Sie im Objektkatalog einsehen (einfach im VBA-Editor auf F2 drücken – Ergebnis siehe Bild 2).
  • OutputTo-Parameter im Objektkatalog des VBA-Editors

    Bild 2: OutputTo-Parameter im Objektkatalog des VBA-Editors

  • OutputFile: Pfad der zu erstellenden PDF-Datei. Wird hier aus dem aktuellen Datenbankverzeichnis (CurrentProject.Path) und dem in strRechnung enthaltenen Dateinamen zusammengesetzt.

PDF-Dokument nach dem Erstellen öffnen

Wenn Sie das PDF-Dokument gleich nach der Erzeugung in Ihrem PDF-Reader anzeigen möchten, fügen Sie der Prozedur noch die folgende Anweisung hinzu:

Application.FollowHyperlink CurrentProject.Path & "\" & strRechnung

Das PDF-Dokument wird dann wie in Bild 3 angezeigt – hier im Adobe Reader.

Ein Access-Bericht im PDF-Format

Bild 3: Ein Access-Bericht im PDF-Format

Speicherort und -zeit sichern

Wenn Sie eine Rechnung einmal erstellt haben, sollten Sie die der Rechnung zugrunde liegenden Daten nicht mehr ändern. Dazu legen wir in der Tabelle tblBestellungen neben dem Feld Rechnungsdatum noch ein Feld namens Rechnungsdatei an (siehe Bild 4).

Feld zum Speichern der Rechnungsdatei

Bild 4: Feld zum Speichern der Rechnungsdatei

Den Code der Prozedur cmdPDFErstellen_Click erweitern Sie unten um die folgenden beiden Zeilen:

Me!Rechnungsdatum = Now

Me!Rechnungsdatei = CurrentProject.Path & "\" & strRechnung

Diese beiden Zeilen tragen den aktuellen Zeitpunkt und den Dateinamen in die Felder Rechnungsdatum und Rechnungsdatei des aktuell im Formular angezeigten Datensatzes ein (siehe Bild 5).

Bestellung mit vollständigen Rechnungsdaten

Bild 5: Bestellung mit vollständigen Rechnungsdaten

Vorhandene Rechnungen anzeigen

Mit einer weiteren Schaltfläche sollen bereits gespeicherte Rechnungen im PDF-Format angezeigt werden können. Diese Schaltfläche heißt cmdPDF­Anzeigen und löst beim Klicken die folgende Prozedur aus:

Private Sub cmdPDFAnzeigen_Click()

     Application.FollowHyperlink Me!rechnungsdatei

End Sub

Schaltflächen ein- und ausblenden

Beim Anzeigen einer Rechnung soll das Formular die beiden Schaltflächen cmdPDFErstellen und cmd­PDF­Anzeigen aktivieren beziehungsweise deaktivieren – je nachdem, ob die PDF-Datei bereits erstellt wurde.

Da wir diesen Vorgang gleich noch von einer anderen Stelle aus anstoßen müssen, gliedern wir die notwendigen Anweisungen in eine eigene Prozedur aus:

Private Sub SchaltflaechenAktivieren()

     If Len(Nz(Me!Rechnungsdatei, "")) > 0 Then

         Me!cmdPDFAnzeigen.Enabled = True

         Me!cmdPDFErstellen.Enabled = False

     Else

         Me!cmdPDFAnzeigen.Enabled = False

         Me!cmdPDFErstellen.Enabled = True

     End If

End Sub

Die Prozedur prüft, ob das Feld Rechnungsdatei bereits einen Dateinamen enthält und aktiviert die Schaltflächen entsprechend durch Einstellen der Eigenschaft Enabled auf die Werte True oder False.

Sie haben das Ende des frei verfügbaren Teil dieses Artikels erreicht!

Wenn Sie mehr lesen und auf viele weitere Artikel zugreifen möchten, melden Sie sich als Abonnent unter Login an. Falls nicht, bestellen Sie doch einfach ein Jahresabonnement!