Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Email senden, Laufzeitfehler 287

Forumthread: Email senden, Laufzeitfehler 287

Email senden, Laufzeitfehler 287
29.05.2020 11:18:45
Joachim
Hallo,
wir bekamen neue PCs jetzt mit Office 2016, vorher 2010.
Meine Serienmailerstellung aus Excel funktioniert nicht mehr. Ich hab den Code soweit reduziert, um zu sehen, woran es liegen kann. Der Laufzeitfehler wird bei .Send angezeigt. Display funktioniert, nur Send nicht.
Unter Verweise hab ich die Microsoft Outlook 16.0 Object Library aktiviert.
Hier der Code:
Sub EmailSenden()
Dim objOut As Object
Dim objMail As Object
Set objOut = CreateObject("Outlook.Application")
Set objMail = objOut.CreateItem(0)
With objMail
.To = "abc123@mail123.de"
.Subject = "Betreff"
.HTMLBody = "Ihre Nachricht."
'.Display
.Send
End With
Set objOut = Nothing
Set objMail = Nothing
End Sub
Warum geht Send nicht?
Gruss
Joachim
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Email senden, Laufzeitfehler 287
29.05.2020 11:42:02
M.
Hallo Joachim,
ich habe Deinen Beispielcode einmal bei mir laufen lassen und es funktionierte einwandfrei. Sind eventuell die Makro-Sicherheits-Einstellungen anders gesetzt als auf dem alten PC?
Viele Grüße,
M. Born
AW: Email senden, Laufzeitfehler 287
29.05.2020 11:53:08
Joachim
Hallo,
an die Einstellungen komm ich nicht ran. Die werden zentral verwaltet.
Es muss aber an sowas liegen, denn auf meinem Privat-PC unter Office2019 läuft es auch.
Wie müssten die Sicherheitseinstellungen sein, damit's läuft?
Joachim
Anzeige
AW: Email senden, Laufzeitfehler 287
29.05.2020 18:28:18
onur
Das sind Sicherheitseinstellungen - sonst könnte ja ein Makro vom User unbemerkt massig Mails schicken.
Deswegen ist das sehr gefährlich.
Du kannst das notfalls so umgehen:
With objMail
.To = "Empfänger@test.de"'Mailadresse
.Subject = "Betreff"
.HTMLBody = "Ihre Nachricht."
.Display
'.Send
End With
Application.SendKeys ("%S")
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

E-Mail aus Excel senden: Laufzeitfehler 287 beheben


Schritt-für-Schritt-Anleitung

Wenn Du E-Mails aus Excel über VBA versenden möchtest, kann es zu Problemen wie dem Laufzeitfehler 287 kommen. Hier ist eine Schritt-für-Schritt-Anleitung, um sicherzustellen, dass alles korrekt eingerichtet ist:

  1. Überprüfen der Microsoft Outlook-Referenzen:

    • Öffne Excel und gehe zu Entwicklertools > Visual Basic.
    • Klicke auf Extras > Verweise und stelle sicher, dass die Microsoft Outlook 16.0 Object Library aktiviert ist.
  2. Makro-Sicherheitseinstellungen prüfen:

    • Gehe zu Datei > Optionen > Trust Center > Einstellungen für das Trust Center.
    • Vergewissere Dich, dass die Makros aktiviert sind und nicht auf "Alle Makros deaktivieren" eingestellt sind.
  3. VBA-Code anpassen:

    • Verwende den folgenden Code, um E-Mails zu senden:
      Sub EmailSenden()
       Dim objOut As Object
       Dim objMail As Object
       Set objOut = CreateObject("Outlook.Application")
       Set objMail = objOut.CreateItem(0)
       With objMail
           .To = "abc123@mail123.de"
           .Subject = "Betreff"
           .HTMLBody = "Ihre Nachricht."
           '.Display  ' Zum Testen anzeigen
           .Send  ' E-Mail senden
       End With
       Set objOut = Nothing
       Set objMail = Nothing
      End Sub
  4. Makro ausführen:

    • Starte das Makro über Entwicklertools > Makros und wähle EmailSenden.

Häufige Fehler und Lösungen

  • Laufzeitfehler 287: Dieser Fehler tritt häufig auf, wenn die Makro-Sicherheitseinstellungen zu streng sind. Stelle sicher, dass Du die oben genannten Sicherheitseinstellungen überprüft hast.

  • E-Mail wird nicht gesendet: Wenn .Send nicht funktioniert, teste zuerst .Display, um zu sehen, ob die E-Mail korrekt erstellt wird. Wenn sie angezeigt wird, aber nicht gesendet werden kann, liegt es wahrscheinlich an den Sicherheitseinstellungen von Outlook.


Alternative Methoden

Wenn das direkte Senden von E-Mails über VBA nicht funktioniert, gibt es Alternativen:

  • Verwendung von Application.SendKeys: Diese Methode kann verwendet werden, um die E-Mail im Hintergrund zu senden:

    Application.SendKeys ("%S")

    Beachte, dass dies nicht die sicherste Methode ist, da es auf Tastatureingaben angewiesen ist.

  • Manuelles Senden: Du kannst auch die .Display-Methode verwenden, um die E-Mail anzuzeigen, und sie dann manuell senden.


Praktische Beispiele

Hier sind einige Beispiele, wie Du den E-Mail-Versand aus Excel optimieren kannst:

  • E-Mail mit Anhang:

    .Attachments.Add "C:\Pfad\zur\Datei.txt"
  • E-Mail an mehrere Empfänger:

    .To = "empfaenger1@test.de; empfaenger2@test.de"
  • HTML-Inhalte einfügen:

    .HTMLBody = "<h1>Ihre Nachricht</h1><p>Dies ist ein Beispiel für HTML-Inhalt.</p>"

Tipps für Profis

  • Verwende Fehlerbehandlung: Füge Fehlerbehandlungsroutinen in Deinen VBA-Code ein, um Probleme schnell zu identifizieren:

    On Error Resume Next
    .Send
    If Err.Number <> 0 Then
      MsgBox "Fehler beim Senden der E-Mail: " & Err.Description
    End If
  • E-Mail-Parameter dynamisch gestalten: Du kannst E-Mail-Adressen und Inhalte aus Excel-Zellen dynamisch lesen, um Serienmails zu versenden.


FAQ: Häufige Fragen

1. Warum funktioniert .Send, aber .Display nicht?
Es kann an den Sicherheitseinstellungen von Outlook liegen. Stelle sicher, dass Du die richtigen Berechtigungen hast.

2. Was kann ich tun, wenn ich keinen Zugriff auf die Makro-Einstellungen habe?
Sprich mit Deinem IT-Administrator, um die notwendigen Berechtigungen zu erhalten.

3. Wie kann ich sicherstellen, dass meine E-Mails nicht als Spam markiert werden?
Verwende eine gültige Absenderadresse und achte darauf, dass der Inhalt Deiner E-Mail nicht als Spam eingestuft wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige