E-Mail mit Anhang versenden in Excel VBA
Schritt-für-Schritt-Anleitung
Um eine E-Mail mit Anhang über Excel VBA zu versenden, kannst du das folgende Makro verwenden. Es erstellt eine E-Mail in Outlook und ermöglicht es dir, Dateien als Anhang hinzuzufügen.
Sub ExcelMailsenden()
ChDir ThisWorkbook.Path 'Aktuellen Ordner festlegen
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
Sheets("1. Mängelanzeige").Range("i1").Value & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
Dim objOutlook As Object
Dim objMail As Object
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.createItem(0)
With objMail
.GetInspector ' sorgt für die Signatur
.To = Sheets("1. Mängelanzeige").Range("A4").Value
.CC = Sheets("1. Mängelanzeige").Range("A5").Value
.BCC = Sheets("1. Mängelanzeige").Range("A6").Value
.Subject = ThisWorkbook.Worksheets("1. Mängelanzeige").Range("i1")
.Body = Sheets("1. Mängelanzeige").Range("k43").Value & .Body
MsgBox "Bitte Datei auswählen."
Dim fdOpen As FileDialog
Set fdOpen = Application.FileDialog(msoFileDialogOpen)
With fdOpen
.AllowMultiSelect = True
.InitialView = msoFileDialogViewList
.InitialFileName = ActiveWorkbook.Path
.Title = "Bitte die zu sendende(n) Datei(en) auswählen!"
.ButtonName = "per E-Mail senden"
If .Show = True Then
Dim i As Integer
For i = 1 To .SelectedItems.Count
.Attachments.Add .SelectedItems(i)
Next i
End If
End With
End With
End Sub
Achte darauf, dass du die richtigen Zellreferenzen in deinem Arbeitsblatt verwendest, um die E-Mail-Adresse und andere notwendige Informationen abzurufen.
Häufige Fehler und Lösungen
-
Dateien werden nicht als Anhang hinzugefügt
Stelle sicher, dass du objMail.Attachments.Add verwendest und nicht Mail.Attachments.Add. Der richtige Befehl sollte so aussehen:
objMail.Attachments.Add .SelectedItems(i)
-
Outlook öffnet sich nicht
Überprüfe, ob Outlook korrekt installiert und konfiguriert ist. Du musst möglicherweise die Sicherheitswarnungen in Outlook anpassen, um Makros zuzulassen.
Alternative Methoden
Falls du kein VBA verwenden möchtest, kannst du auch die SendMail-Funktion in Excel nutzen, um einfache E-Mails ohne Anhänge zu senden. Diese Methode hat jedoch Einschränkungen hinsichtlich der Anpassbarkeit und des Anhangs.
Ein Beispiel für die Verwendung von SendMail:
ActiveWorkbook.SendMail "empfaenger@example.com", "Betreff der E-Mail"
Praktische Beispiele
Ein Beispiel für die Verwendung des Makros könnte die Erstellung eines PDF-Dokuments sein, das dann als Anhang versendet wird. Du kannst das Makro anpassen, um verschiedene Formate zu exportieren oder weitere Informationen zu den E-Mails hinzuzufügen.
Tipps für Profis
- Verwende
Option Explicit: Dies hilft, Fehler beim Deklarieren von Variablen zu vermeiden.
- Fehlerbehandlung einfügen: Verwende
On Error Resume Next, um mögliche Laufzeitfehler zu handhaben und deine E-Mail-Funktion robuster zu machen.
- Testen in einer Sandbox: Vor dem Einsatz in der Produktion solltest du das Makro in einer Testumgebung ausprobieren.
FAQ: Häufige Fragen
1. Kann ich mehrere Dateien gleichzeitig anhängen?
Ja, das Makro unterstützt das Anhängen mehrerer Dateien, wenn du die AllowMultiSelect-Eigenschaft auf True setzt.
2. Ist dieses Makro nur für Outlook?
Ja, dieses VBA-Skript ist speziell für Outlook konzipiert. Es wird nicht in anderen E-Mail-Programmen funktionieren.