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.
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.
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).
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: