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

Mail per vba versenden geht nicht mehr

Forumthread: Mail per vba versenden geht nicht mehr

Mail per vba versenden geht nicht mehr
13.11.2014 13:59:51
Jürgen
Hallo zusammen,
ich habe einen neuen Rechner bekommen, auf dem statt Windows XP nun Windows7 und statt Office 2007 Office 2010 instlliert ist. Jetzt stelle ich gerade fest, das das Versenden von Mails per vba Code nicht mehr funktioniert. Der Code
Set objOutlook = CreateObject("Outlook.Application")
führt jetzt zu der Fehlermeldung
Laufzeitfehler 429 - Objekterstellung durch ActiveX-Komponente nicht möglich
Unter dieser Fehlermeldung gibt's im Netz unzählige Einträge, aber eine Lösung habe ich leider dort noch nicht gefunden. Unter VBA - Extras - Verweise ist die Microsoft Outlook 14.0 Object Library angehakt. Daran kann's nicht liegen.
Kann mir jemand sagen, wie ich das wieder hinbekomme?
Viele Grüße und besten Dank im Voraus,
Jürgen

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mail per vba versenden geht nicht mehr
13.11.2014 16:31:08
Oberschlumpf
Hi Jürgen
zeig uns doch mal eine Bsp-Excel-Datei mit eben nur dem Code, in dem eine Mail per OL versendet werden soll.
So ist es für uns einfacher, den Fehler zu suchen, wenn wir deinen Code zum Testen haben.
Ciao
Thorsten

AW: Mail per vba versenden geht nicht mehr
14.11.2014 10:03:40
Jürgen
Hi Thorsten,
Der Code ist recht lang, hier der Teil, der die E-Mail versenden soll.
Ich glaube aber nicht, dass Dir das weiterhilft, denn die Fehlermeldung kommt ja bereits
nach
Set objOutlook = CreateObject("Outlook.Application").
Wenn ich das entferne kommt die Fehlermeldung nach
Set objMail = objOutlook.CreateItem(0)
und wenn ich das entferne nach
Set olApp = CreateObject("Outlook.Application")
Der Code hat bisher ja auch einwandfrei funktioniert. Erst seit der Umstellung auf Window7 und Excel2010 kommt es zu der Fehlermeldung.
Sub E_MAIL()
Dim objOutlook As Object
Dim objMail As Object
Dim olApp As Object
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
Set olApp = CreateObject("Outlook.Application") 'Wird wahrscheinlich nicht benötigt.
'E-Mail OHNE Anlage
If Anlagen_gesamt = 0 Then
With objMail
.To = E_Mail_Adresse 'Variable
'.Subject = "Protokolleintrag vom " & Datum & ", Projektnummer: " & Projektnummer & ",  _
Projekt: " & Projekt
'.Body = "Hauptthema: " & Hauptthema & Chr(10) & "Punkt " & X & "." & Y & Chr(10) & " _
Status der Aufgabe: " & Status_Aufgabe & Chr(10) & "Status des Termins: " & Status_Termin & Chr(10) & "Priorität: " & Priorität & Chr(10) & Chr(10) & "Inhalt: " & Inhalt & Chr(10) & Chr(10) & Anhang
.Subject = "Projekt: " & Projekt & ", Vorgang: " & Hauptthema
.Body = "Protokolleintrag vom " & Datum & ", Projektnummer: " & Projektnummer & ",  _
Projekt: " & Projekt & Chr(10) & "Hauptthema: " & Hauptthema & Chr(10) & "Punkt " & x & "." & Y & Chr(10) & "Termin: " & Termin & " / KW " & KW & Chr(10) & "Status der Aufgabe: " & Status_Aufgabe & Chr(10) & "Status des Termins: " & Status_Termin & Chr(10) & "Priorität: " & Priorität & Chr(10) & Chr(10) & "Inhalt: " & Inhalt & Chr(10) & Chr(10) & Anhang
'.Attachments.Add ThisWorkbook.FullName 'Die aktuelle Excel Datei
'.Attachments.Add NameAnlage1       'Eine beliebige Datei
'.Display 'Falls die Mail noch bearbeitet werden soll.
.Send
End With
End If
'E-Mail mit EINER Anlage
If Anlagen_gesamt = 1 Then
With objMail
.To = E_Mail_Adresse
'.Subject = "Protokolleintrag vom " & Datum & ", Projektnummer: " & Projektnummer & ",  _
Projekt: " & Projekt
'.Body = "Hauptthema: " & Hauptthema & Chr(10) & "Punkt " & X & "." & Y & Chr(10) & " _
Status der Aufgabe: " & Status_Aufgabe & Chr(10) & "Status des Termins: " & Status_Termin & Chr(10) & "Priorität: " & Priorität & Chr(10) & Chr(10) & "Inhalt: " & Inhalt & Chr(10) & Chr(10) & Anhang
.Subject = "Projekt: " & Projekt & ", Vorgang: " & Hauptthema
.Body = "Protokolleintrag vom " & Datum & ", Projektnummer: " & Projektnummer & ",  _
Projekt: " & Projekt & Chr(10) & "Hauptthema: " & Hauptthema & Chr(10) & "Punkt " & x & "." & Y & Chr(10) & "Termin: " & Termin & " / KW " & KW & Chr(10) & "Status der Aufgabe: " & Status_Aufgabe & Chr(10) & "Status des Termins: " & Status_Termin & Chr(10) & "Priorität: " & Priorität & Chr(10) & Chr(10) & "Inhalt: " & Inhalt & Chr(10) & Chr(10) & Anhang
'.Attachments.Add ThisWorkbook.FullName 'Die aktuelle Excel Datei
.Attachments.Add NameAnlage1       'Eine beliebige Datei
'.Display 'Falls die Mail noch bearbeitet werden soll.
.Send
End With
End If
End Sub

Gruß, Jürgen

Anzeige
AW: Mail per vba versenden geht nicht mehr
14.11.2014 11:12:05
Oberschlumpf
Hi Jürgen
ich schrieb...
"zeig uns doch mal eine Bsp-Excel-Datei"
...NICHT, damit du uns den Code in deiner Antwort schreibst!
Wo ist also die DATEI mit dem Code?
Ich versuchte, den Code in Excel einzufügen.
Das endete aber mit vielen rot gefärbten Zeilen im Code.
Der Grund ist, dass hier gezeigter (Code)Text durch die Forumssoftware mit Zeilenumbrüchen versehen wird, damit es hier im Forum "schön" aussieht.
Das ist nur blöd, wenn es sich um Code handelt.
Und ich hab keine Lust, die falschen Umbrüche im Code zu entfernen.
Bei deiner Angabe VBA = gut hab ich eigtl erwartet, dass du auch gut lesen kannst.
Sorry, bin genervt.
Bitte Datei uploaden, dann schau ich noch mal rein...vllt auch jemand anderes.
Ciao
Thorsten

Anzeige
AW: Mail per vba versenden geht nicht mehr
14.11.2014 12:48:02
Jürgen
Hi Thorsten
Du schriebst: "Bei deiner Angabe VBA = gut hab ich eigtl erwartet, dass du auch gut lesen kannst.
Sorry, bin genervt."
Solche Sprüche kannst Du Dir gerne sparen!
Wenn mein Kollege, der von VBA keine Ahnung hat, den Code in den VBA Editor lädt,
muss er genau zweimal auf die Backspace Tast drucken und der Code passt. Die Datei aus der
die Mails versendet werden sollen ist viel zu umfangreich als dass ich sie hier einfach hochladen
werde. Außerdem ist der Code nicht fehlerhaft, denn er hat ja bisher funktioniert. Aber das hatte
ich auch schon geschrieben.
Wie auch immer, entspann Dich, ich lege auf Deine Hilfe keinen Wert!
Gruß, Jürgen

Anzeige
ok :-)...owT
14.11.2014 15:51:31
Oberschlumpf
;
Anzeige
Anzeige

Infobox / Tutorial

Mail per VBA versenden: Lösungen für häufige Probleme


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor in Excel, indem Du ALT + F11 drückst.

  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (DeineDatei.xlsx)" > Einfügen > Modul.

  3. Füge den folgenden Code ein:

    Sub E_MAIL()
        Dim objOutlook As Object
        Dim objMail As Object
        Set objOutlook = CreateObject("Outlook.Application")
        Set objMail = objOutlook.CreateItem(0)
    
        With objMail
            .To = "deine.email@beispiel.de"
            .Subject = "Betreff der E-Mail"
            .Body = "Inhalt der E-Mail"
            .Send
        End With
    End Sub
  4. Ersetze die Platzhalter in diesem Beispiel durch Deine gewünschten Werte.

  5. Führe das Makro aus, um die E-Mail zu senden.


Häufige Fehler und Lösungen

  • Laufzeitfehler 429: "Objekterstellung durch ActiveX-Komponente nicht möglich."

    • Lösung: Überprüfe, ob Microsoft Outlook korrekt installiert und konfiguriert ist. Stelle sicher, dass Du die richtige Version der Outlook-Bibliothek (z.B. Microsoft Outlook 14.0 Object Library für Office 2010) in den Verweisen aktiviert hast.
  • Fehler beim Erstellen des Outlook-Objekts:

    • Lösung: Stelle sicher, dass keine anderen Office-Anwendungen im Hintergrund laufen, die möglicherweise den Zugriff auf Outlook blockieren.

Alternative Methoden

Falls der VBA-Ansatz nicht funktioniert, kannst Du auch folgende Methoden ausprobieren:

  • Verwende Power Automate: Mit Microsoft Power Automate kannst Du automatisierte Workflows erstellen, die E-Mails basierend auf bestimmten Triggern senden.
  • Nutze die Excel-Funktionalität: Wenn Du keine komplexen E-Mails benötigst, kannst Du die "Senden als E-Mail"-Funktion in Excel nutzen, um Arbeitsblätter als Anhang zu versenden.

Praktische Beispiele

Hier ist ein einfaches Beispiel, wie Du eine E-Mail mit einem Anhang versenden kannst:

Sub E_MAIL_Mit_Anhang()
    Dim objOutlook As Object
    Dim objMail As Object
    Set objOutlook = CreateObject("Outlook.Application")
    Set objMail = objOutlook.CreateItem(0)

    With objMail
        .To = "deine.email@beispiel.de"
        .Subject = "Betreff der E-Mail"
        .Body = "Inhalt der E-Mail"
        .Attachments.Add "C:\Pfad\zur\Datei.txt" ' Füge hier den Pfad Deiner Datei ein
        .Send
    End With
End Sub

Tipps für Profis

  • Verwende das Durchmesserzeichen (°): Wenn Du spezielle Zeichen in der E-Mail verwenden möchtest, stelle sicher, dass Du die richtigen ASCII-Codes verwendest, z.B. Chr(176) für das Durchmesserzeichen.
  • Teste den Code schrittweise: Führe den Code Zeile für Zeile aus, um den genauen Punkt zu finden, an dem der Fehler auftritt.
  • Nutze Fehlerbehandlungsroutinen: Implementiere On Error Resume Next, um Probleme elegant zu handhaben.

FAQ: Häufige Fragen

1. Warum kann ich keine E-Mail mit VBA senden?
Es könnte an einer falschen Outlook-Version oder fehlenden Berechtigungen liegen. Stelle sicher, dass Outlook korrekt installiert ist und die richtigen Verweise in VBA gesetzt sind.

2. Was ist der Unterschied zwischen CreateObject und New?
CreateObject wird verwendet, um eine Instanz eines Objekts zur Laufzeit zu erstellen, während New eine Instanz während der Kompilierungszeit erstellt. In vielen Fällen ist CreateObject flexibler und zu bevorzugen.

3. Funktioniert das mit jeder Excel-Version?
Das Beispiel ist für Excel 2010 und höher optimiert. Ältere Versionen könnten abweichendes Verhalten zeigen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige