Berichte per E-Mail versenden, Teil II

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.

Zu guter Letzt stellen wir die Priorität der E-Mail mit der Rechnung auf Hoch ein und fordern vom Empfänger eine Empfangsbestätigung an – beides ist optional.

Wenn Sie eine solche Funktion neu zu einer Anwendung hinzufügen, wollen Sie die E-Mails vermutlich zunächst per Sichtkontrolle prüfen.

Daher zeigt die Prozedur die E-Mails zunächst mit der Display-Methode an, der Benutzer kann diese dann mit einem Klick auf die Senden-Schaltfläche der E-Mail absenden.

Wenn Sie sich später vom ordnungsgemäßen Zusammenstellen der E-Mails überzeugt haben, ersetzen Sie die Display-Methode durch die Send-Methode – die E-Mails werden dann direkt verschickt.

Das Ergebnis sieht schließlich wie in Bild 2 aus: Eine sendebereite E-Mail mit allen benötigten Daten.

Anzeige einer E-Mail mit Rechnung vor dem Versand

Bild 2: Anzeige einer E-Mail mit Rechnung vor dem Versand

Hier noch der Hinweis, dass zu einer gewerblich versendeten E-Mail noch eine entsprechende Signatur gehört.

Rechnungsversand notieren

Wenn Sie die Rechnung versenden, sollten Sie noch das Versanddatum notieren. Dazu fügen Sie der Tabelle tblBestellungen ein Feld namens Rechnungsversand, welches das Versanddatum der Rechnung speichert (siehe Bild 3).

Entwurfsansicht der Tabelle tblBestellungen

Bild 3: Entwurfsansicht der Tabelle tblBestellungen

Mehrere Rechnungen auf einmal senden

Mit steigender Anzahl der zu versendenden Rechnungen möchten Sie diese Aufgabe vielleicht automatisieren und gleich mehrere Rechnungs-E-Mails auf einen Schlag versenden. Kein Problem: Wir erstellen ein neues Formular, das alle Bestellungen anzeigt, deren Rechnung noch nicht versendet wurde.

Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access [basics]:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 400 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar