VBA Tipp: Bericht als HTML-Nachricht über Outlook versenden

Aus DBWiki
Wechseln zu: Navigation, Suche

Anforderung

Ich möchte einen Bericht als HTML-Datei erzeugen, und den Inhalt der Datei als Mail-Nachricht über Outlook versenden.

Lösung

Das geht mit der folgenden Sub-Prozedur, die in einem globalen Modul gespeichert wird.

In der Prozedur werden zwei weitere Prozeduren/Funktionen aus dem DBWiki verwendet:

Public Sub HTMLBerichtPerMail(ByVal Berichtsname As String, _
                              ByVal WhereCondition As String, _
                              ByVal Empfänger As String, _
                              ByVal Betreff As String, _
                              Optional ByVal Anrede As String = "", _
                              Optional ByVal Signatur As String = "", _
                              Optional SofortSenden As Boolean = False)
 
 'Bericht als HTML-Nachricht über Outlook versenden
 'Quelle: www.dbwiki.net oder www.dbwiki.de
 
 Dim strDateiinhalt As String
 Dim strHTMLNachricht As String
 Dim strDateipfad As String
 
 'Pfad und Name der temporären HTML-Datei
 strDateipfad = CurrentProject.Path & "\" & "Bericht.html"
 
 'Schritt 1: Bericht als HTML-Datei erzeugen
 'Bericht gefiltert öffnen
 DoCmd.OpenReport Berichtsname, acViewPreview, , WhereCondition, acHidden
 
 'HTML-Datei erzeugen
 DoCmd.OutputTo acOutputReport, Berichtsname, acFormatHTML, strDateipfad
 
 'Bericht schließen
 DoCmd.Close acReport, Berichtsname, acSaveNo
 
 'Schritt 2: Dateiinhalt in Variable einlesen (Sub-Prozedur "DateiAuslesen" aus dem DBWiki)
 strDateiinhalt = DateiAuslesen(strDateipfad)
 
 'Nachricht zusammenstellen
 strHTMLNachricht = Anrede & strDateiinhalt & Signatur
 
 'Schritt 3: Bericht per Outlook versenden (Sub-Prozedur "MailversandOutlook" aus dem DBWiki)
 Call MailversandOutlook(Empfänger, Betreff, strHTMLNachricht, True, SofortSenden)
 
 'Schritt 4: Temporäre HTML-Datei wieder löschen
 Kill strDateipfad
 
End Sub

Aufruf

 Dim strBerichtsname As String
 Dim strWhereCondition As String
 Dim strEmpfänger As String
 Dim strBetreff As String
 Dim strAnrede As String
 Dim strSignatur As String
 
 'Parameter-Beispiele:
 
 'Berichtsname
 strBerichtsname = "rptRechnungen"
 
 'Filterbedingungen für den Bericht
 strWhereCondition = "RechnungsNr = 10275"
 
 'Mailadresse des Empfängers
 strEmpfänger = "hans.mustermann@t-online.de"
 
 'Mail-Betreff
 strBetreff = "Ihr Bericht"
 
 'Anrede
 strAnrede = "Sehr geehrte Damen und Herren, <br /><br />"
 strAnrede = strAnrede & "hier der gewünschte Bericht.<br /><br />"
 
 'Signatur
 strSignatur = "<br /><br />Mit freundlichen Grüßen"
 
 'Versand-Beispiel:
 'Bericht, ohne Filterbedingungen, mit Anrede und Signatur, sofort versenden
 Call HTMLBerichtPerMail(strBerichtsname, "", strEmpfänger, strBetreff, _
      strAnrede, strSignatur, True)