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