VBA Mailversand per Outlook mit Signatur in Excel
Schritt-für-Schritt-Anleitung
- Öffne Excel und drücke 
ALT + F11, um den VBA-Editor zu öffnen. 
- Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (DeineDatei.xlsx)" > 
Einfügen > Modul. 
- Kopiere den folgenden Code in das Modul:
 
Sub Mail_Outlook()
    Dim olApp As Object
    Dim olOldBody As String, varKW_Jahr As String
    Dim strGetHtmlBodyText As String
    Dim strFilePDF As String
    Dim varEmpfaenger As String, varKopie As String
    Const sPfad As String = "C:\STtool\Rapport\"
    varKW_Jahr = Range("B3") & "/" & Range("D1")
    varEmpfaenger = "MaiAdresse1"
    varKopie = "MaiAdresse2"
    strFilePDF = sPfad & "DE.pdf"
    Set olApp = CreateObject("Outlook.Application")
    With olApp.CreateItem(0)
        .GetInspector.Display
        olOldBody = .HTMLBody
        .Subject = "Wochenbericht KW " & varKW_Jahr
        .To = varEmpfaenger
        .CC = varKopie
        .HTMLBody = "<b><font face='verdana' size='2'>Hallo Gast,</font></b><br>" & _
                    "<font face='verdana'>Hier soll der Text in Form einer Variablen stehen.</font><br>" & _
                    olOldBody
        .Attachments.Add strFilePDF
        .Display
    End With
    Set olApp = Nothing
End Sub
- Passe die Variablen an: Stelle sicher, dass 
varEmpfaenger, varKopie, und der Pfad zu strFilePDF korrekt sind. 
- Führe das Makro aus: Klicke im VBA-Editor auf 
Run oder drücke F5. 
Häufige Fehler und Lösungen
- Mail wird nicht gesendet: Überprüfe, ob Outlook korrekt konfiguriert ist und du die richtigen E-Mail-Adressen verwendet hast.
 
- Dateianhang fehlt: Stelle sicher, dass der angegebene Pfad zu 
strFilePDF korrekt ist und die Datei existiert. 
- HTML-Formatierung nicht angezeigt: Achte darauf, dass du den HTML-Body korrekt formatierst. Verwende 
Replace, um Zeilenumbrüche in <br> umzuwandeln. 
Alternative Methoden
- Verwendung von 
CreateObject für Outlook: Anstelle von Set olApp = New Outlook.Application kannst du CreateObject("Outlook.Application") verwenden, um die Instanz dynamisch zu erstellen. 
- Direktes Einfügen von Signaturen: Wenn du eine standardmäßige Signatur in Outlook hast, kannst du diese direkt ins HTMLBody einfügen, indem du 
.HTMLBody = .HTMLBody & "<br>" & SignaturText anfügst. 
Praktische Beispiele
Hier ein Beispiel, wie du die Anrede und den Mailtext aus Excel-Zellen beziehen kannst:
strGetHtmlBodyText = Range("A1").Value & vbLf & Range("A2").Value
strGetHtmlBodyText = Replace(strGetHtmlBodyText, vbLf, "<br>")
In diesem Beispiel stehen die Zellen A1 und A2 für die Anrede und den Mailtext. Dies sorgt für eine flexible Anpassung direkt in der Excel-Tabelle.
Tipps für Profis
- Variablen sinnvoll benennen: Verwende sprechende Namen für deine Variablen, um den Code leichter verständlich zu machen.
 
- Fehlerbehandlung einbauen: Implementiere 
On Error Resume Next, um Fehler abzufangen und den Code robuster zu gestalten. 
- Signatur automatisiert einfügen: Überlege, eine Funktion zu erstellen, die automatisch die Signatur aus Outlook abruft und in die E-Mail einfügt.
 
FAQ: Häufige Fragen
1. Wie kann ich eine Signatur automatisch einfügen?
Du kannst die Signatur aus deinem Outlook-Profil abrufen und an die HTMLBody-Variable anhängen. Dazu benötigst du jedoch zusätzliche VBA-Codierung.
2. Muss ich ein bestimmtes Outlook-Format verwenden?
Es ist empfehlenswert, Outlook 2016 oder neuer zu verwenden, um die besten Ergebnisse beim VBA-Mailversand und der Signaturintegration zu erzielen.
3. Wie kann ich den Code anpassen, um mehrere Empfänger hinzuzufügen?
Du kannst mehrere E-Mail-Adressen durch ein Komma in der To-Eigenschaft angeben: .To = "empfaenger1@example.com; empfaenger2@example.com".
4. Wo kann ich die Datei finden, die ich anhänge?
Stelle sicher, dass der Pfad in Const sPfad korrekt ist und die Datei tatsächlich an diesem Ort vorhanden ist.