E-Mail mit Signatur in Excel VBA ohne Laufzeitfehler 287
Schritt-für-Schritt-Anleitung
Um eine E-Mail mit einer Signatur in Excel VBA zu erstellen und den Laufzeitfehler 287 zu vermeiden, befolge diese Schritte:
-
Öffne den VBA-Editor: Drücke ALT + F11
in Excel.
-
Erstelle ein neues Modul: Klicke mit der rechten Maustaste auf VBAProject (DeineDatei.xlsx)
und wähle Einfügen > Modul
.
-
Füge den folgenden Code ein:
Sub emailerstellen()
Dim objOutlook As Object
Dim objMail As Object
Dim olOldBody As String
Dim file As String
Dim pfad As String
Dim an As String
Dim cc As String
pfad = "C:\DeinPfad\" ' Passe den Pfad an
an = "empfaenger@example.com"
cc = "cc@example.com"
Set objOutlook = CreateObject("Outlook.Application")
file = Dir(pfad & "*.xlsx")
Do While file <> ""
Set objMail = objOutlook.CreateItem(0)
With objMail
.GetInspector
olOldBody = .htmlBody
.To = an
.CC = cc
.Subject = "Online Survey (Corona)"
.htmlBody = "Test" & olOldBody
.Attachments.Add pfad & file
.Display
End With
Set objMail = Nothing
file = Dir
Loop
End Sub
-
Passe den Pfad und die E-Mail-Adressen an: Stelle sicher, dass du den Pfad zu deinen Dateien und die E-Mail-Adressen korrekt angibst.
-
Führe das Skript aus: Drücke F5
oder wähle Ausführen > Sub/UserForm ausführen
.
Häufige Fehler und Lösungen
-
Laufzeitfehler 287: Dieser Fehler tritt häufig auf, wenn olOldBody
nicht korrekt zugewiesen wird. Stelle sicher, dass die .GetInspector
-Methode aufgerufen wird, bevor du auf .htmlBody
zugreifst.
-
E-Mail wird nicht gesendet: Überprüfe, ob das Outlook-Objekt korrekt erstellt wurde und ob der E-Mail-Client geöffnet ist.
-
Falscher Pfad: Achte darauf, dass der angegebene Pfad zu den .xlsx-Dateien korrekt ist und die Dateien vorhanden sind.
Alternative Methoden
-
Versenden mehrerer Dateien in einer E-Mail: Du kannst den Code so modifizieren, dass alle .xlsx-Dateien in einer E-Mail angehängt werden. Ändere die Schleife wie folgt:
file = Dir(pfad & "*.xlsx")
Set objMail = objOutlook.CreateItem(0)
With objMail
.GetInspector
olOldBody = .htmlBody
.To = an
.CC = cc
.Subject = "Online Survey (Corona)"
.htmlBody = "Test" & olOldBody
Do While file <> ""
.Attachments.Add pfad & file
file = Dir
Loop
.Display
End With
Praktische Beispiele
Ein einfaches Beispiel für den E-Mail-Versand:
Sub emailBeispiel()
' Hier kannst du den Code für den E-Mail-Versand ohne Laufzeitfehler 287 verwenden.
End Sub
Hierbei solltest du sicherstellen, dass die Variablen wie an
, cc
und pfad
definiert sind.
Tipps für Profis
-
Debugging: Verwende Debug.Print
um Variablenwerte während der Ausführung zu überprüfen.
-
Fehlerbehandlung: Implementiere On Error Resume Next
und On Error GoTo 0
, um Fehler effizient zu handhaben.
-
Outlook-Einstellungen: Stelle sicher, dass in Outlook das Senden von E-Mails ohne Sicherheitswarnungen möglich ist.
FAQ: Häufige Fragen
1. Was bedeutet Laufzeitfehler 287?
Dieser Fehler tritt auf, wenn ein Problem mit den Methoden oder Eigenschaften eines Objekts in VBA vorliegt, oft verursacht durch den Zugriff auf ein Objekt, das nicht richtig initialisiert wurde.
2. Kann ich auch andere Dateitypen anhängen?
Ja, du kannst andere Dateitypen anhängen, indem du die Dateiendung in der Dir
-Funktion anpasst (z.B. "*.pdf" für PDF-Dateien).
3. Wie kann ich die E-Mail direkt senden, anstatt sie anzuzeigen?
Ersetze .Display
durch .Send
im Code, um die E-Mail sofort zu senden.