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.