window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-TCJTE9L38H');

Berichte per E-Mail versenden, Teil II

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Im ersten Teil dieser Artikelreihe haben Sie erfahren, wie Sie ein PDF-Dokument auf Basis eines Access-Berichts erstellen – zum Beispiel zum Erzeugen einer Rechnung. Im zweiten Teil schauen wir uns nun an, wie Sie diesen Bericht per E-Mail an den Empfänger versenden. Und diese Technik sollen Sie nicht nur für einzelne Empfänger, sondern gleich für ganze Listen von Rechnungsempfängern erledigen.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1305_BerichtPerEMail.mdb.

Absendemöglichkeit hinzufügen

Als Grundlage zum Versenden von E-Mails mit einer Rechnungsdatei im Anhang verwenden wir das Formular frmBestellungen der Beispieldatenbank. Dort können Sie gleich nach der Bestellung die Rechnung im PDF-Format erzeugen. Ein weiterer Mausklick soll die Rechnung bereits versenden.

Dazu fügen Sie zum Formular eine eine neue Schaltfläche namens cmdRechnungSenden hinzu (siehe Bild 1). Bevor wir diese mit Leben füllen, sorgen wir noch für eine entsprechende Aktivierung beziehungsweise Deaktivierung der Schaltfläche. Sie soll nur dann anklickbar sein, wenn der Benutzer die PDF-Rechnung bereits erzeugt hat. Das Aktivieren und Deaktivieren der Schaltflächen übernimmt die bereits im ersten Teil der Artikelserie beschriebene Prozedur SchaltflaechenAktivieren.

Hinzufügen einer Schaltfläche zum Versenden der Rechnung per E-Mail

Bild 1: Hinzufügen einer Schaltfläche zum Versenden der Rechnung per E-Mail

Dieser fügen Sie die Anweisung aus Listing 1 hinzu. Sie stellt die Eigenschaft Enabled der Schaltfläche cmd-RechnungSenden auf den Wert True ein, wenn das Feld Rechnungsdatei der Datenherkunft des Formulars bereits den Namen der erstellten Rechnung im PDF-Format enthält.

Private Sub SchaltflaechenAktivieren()
     Dim bol As Boolean
     bol = Len(Nz(Me!Rechnungsdatei, "")) > 0
     ...
     Me!cmdRechnungSenden.Enabled = bol
     ...
End Sub

Listing 1: Aktivieren und Deaktivieren der Schaltfläche zum Versenden einer Rechnung per E-Mail

Rechnung senden per Mausklick

Den eigentlichen Rechnungsversand löst der Benutzer durch einen Klick auf die neu hinzugefügte Schaltfläche aus. Damit dies geschieht, stellen Sie die Eigenschaft Beim Klicken der Schaltfläche cmdRechnungSenden auf den Wert [Ereignisprozedur] ein, klicken auf die Schaltfläche mit den drei Punkten rechts von der Eigenschaft und ergänzen die nun im VBA-Editor erscheinende Ereignisprozedur wie in Listing 2.

Private Sub cmdRechnungSenden_Click()
     Dim objOutlook As Outlook.Application
     Dim objMail As Outlook.MailItem
     Dim strBody As String
     Set objOutlook = New Outlook.Application
     Set objMail = objOutlook.CreateItem(olMailItem)
     With objMail
         .Recipients.Add Me!sfmKundendaten.Form!EMail
         .Subject = "Rechnung zur Bestellung " & Me!BestellungID & " vom " & Me!Bestelldatum
         strBody = "Hallo!" & vbCrLf & vbCrLf
         strBody = strBody & "Hiermit erhalten Sie die Rechnung zu Ihrer Bestellung mit der Nummer " _
             & Me!BestellungID & " vom " & Me!Bestelldatum & "." & vbCrLf & vbCrLf
         strBody = strBody & "Mit freundlichen Grüßen" & vbCrLf
         strBody = strBody & "Ihr Hans Muster"
         .Body = strBody
         .Attachments.Add CStr(Me!Rechnungsdatei)
         .Importance = olImportanceHigh
         .ReadReceiptRequested = True
         .Display
         '.Send
     End With
End Sub

Listing 2: Zusammenstellen und Anzeigen der E-Mail mit der Rechnung als Anhang

Die Prozedur deklariert ein Outlook-Objekt und ein MailItem-Objekt sowie eine String-Variable, in welcher der Inhalt der E-Mail zusammengestellt wird. Damit die beiden Objekttypen zur Verfügung stehen, benötigen Sie einen entsprechenden Verweis auf die Outlook-Bibliothek – mehr dazu erfahren Sie im Artikel E-Mails mit Outlook versenden.

Danach füllt die Prozedur die Objektvariable objOutlook mit einem Verweis auf das mit New erhaltene Outlook.Application-Objekt und erzeugt mit der CreateItem-Methode dieses Objekts ein neues Objekt des Typs MailItem.

Anschließend muss die E-Mail mit den entsprechenden Daten gefüllt werden:

  • Empfänger
  • Betreff
  • Inhalt
  • Anlage

Die Empfänger-Adresse liefert das Feld EMail des Unterformulars mit den Kundendaten zur aktuell angezeigten Bestellung. Den Betreff stellen wir aus einem Text, der Bestellnummer und dem Bestelldatum zusammen, sodass dieser etwa Rechnung zur Bestellung 1234 vom 1.2.2013 lautet.

Den Inhalt der E-Mail fügen wir der übersicht halber zeilenweise zusammen. Auch hier integrieren wir wieder die Bestellnummer und das Bestelldatum. Der Inhalt von strBody landet schließlich in der Eigenschaft Body des MailItem-Objekts.

Rechnungsbericht hinzufügen

Fehlt noch der Rechnungsbericht: Diesen fügt die Prozedur mit der Add-Methode der Attachments-Auflistung hinzu.

Den Pfad der Rechnungsdatei entnimmt sie dem Feld Rechnungsdatei der Datenherkunft des Formulars.

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar