Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Application.Dialogs(xlDialogSendMail) ...

Forumthread: Application.Dialogs(xlDialogSendMail) ...

Application.Dialogs(xlDialogSendMail) ...
29.04.2003 08:10:39
Martin
Hallo,

mit der VBA-Zeile

Application.Dialogs(xlDialogSendMail).Show Range("mail_recipients"), "Betreff.."

versende ich Arbeitsmappen ganz bequem per VBA. Die Namen der Mailempfänger sind in einem versteckten Sheet aufgelistet. Ist bequem, einfach zu pflegen und klappt toll.

Das Mail wird allerdings nicht direkt versendet, es wird in Outlook geladen und wartet dann darauf, dass man den "Send"-Knopf drückt. Kann man diesen Vorgang auch durch VBA erledigen lassen? Die Onlinehilfe hat mir diesbzgl. leider nichts gesagt.

Gruss,
Martin


Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Application.Dialogs(xlDialogSendMail) ...
29.04.2003 08:28:00
Monika Weber

Hallo Martin,

eine mögliche Lösung wäre, statt auf die Dialogbox zuzugreifen, direkt mit Outlook zu arbeiten:

Sub SendMail()
Dim objOutlook As Object
Dim objMail As Object
Dim i As Integer
Dim str As String
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
For i = 1 To Range("mail_recipients").Rows.Count
str = str & Range("mail_recipients").Rows(i).Value & ";"
Next i
With objMail
.to = str
.Subject = "Mail ist da"
.Body = "Eine Testmail"
.Send
End With
Set objOutlook = Nothing
Set objMail = Nothing
End Sub

Es liebs Grüessli
Monika





Anzeige
Re: Application.Dialogs(xlDialogSendMail) ...
29.04.2003 08:38:13
Martin

Hallo Monika,

das schickt mir zwar eine Mail, hängt jedoch nicht die Datei an. Wie bekomme ich das hin bitte?

Gruss,
Martin

Re: Application.Dialogs(xlDialogSendMail) ...
29.04.2003 08:43:48
Monika Weber

Hallo Martin,

ergänze vor "Send":

.Attachments.Add ActiveWorkbook.FullName

An Stelle von "ActiveWorkbook.FullName" kannst Du auch einen Pfad verwenden (z.B. "C:\Test.xls")

Es liebs Grüessli
Monika





Anzeige
Re: Application.Dialogs(xlDialogSendMail) ...
29.04.2003 08:50:10
Martin

Hervorragend. Danke Monika!

Gruss,
Martin

;
Anzeige

Infobox / Tutorial

E-Mails mit Excel VBA versenden: So geht's


Schritt-für-Schritt-Anleitung

  1. Erstelle eine Liste der E-Mail-Empfänger: Lege eine Tabelle an, in der die E-Mail-Adressen der Empfänger unter dem Namen mail_recipients gespeichert sind.

  2. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Erstelle ein neues Modul: Klicke mit der rechten Maustaste auf einen der Einträge im Projektfenster und wähle Einfügen > Modul.

  4. Füge den folgenden Code ein:

    Sub SendMail()
       Dim objOutlook As Object
       Dim objMail As Object
       Dim i As Integer
       Dim str As String
       Set objOutlook = CreateObject("Outlook.Application")
       Set objMail = objOutlook.CreateItem(0)
    
       For i = 1 To Range("mail_recipients").Rows.Count
           str = str & Range("mail_recipients").Rows(i).Value & ";"
       Next i
    
       With objMail
           .to = str
           .Subject = "Mail ist da"
           .Body = "Eine Testmail"
           .Attachments.Add ActiveWorkbook.FullName
           .Send
       End With
    
       Set objOutlook = Nothing
       Set objMail = Nothing
    End Sub
  5. Schließe den VBA-Editor und teste das Makro, indem du es mit F5 ausführst.


Häufige Fehler und Lösungen

  • Fehler: Outlook öffnet sich nicht oder das Makro funktioniert nicht
    Lösung: Stelle sicher, dass Outlook korrekt installiert und konfiguriert ist. Prüfe auch, ob die Sicherheitsrichtlinien in Excel die Ausführung von Makros zulassen.

  • Fehler: Keine E-Mail-Empfänger gefunden
    Lösung: Überprüfe, ob die Range mail_recipients korrekt definiert ist und tatsächlich E-Mail-Adressen enthält.

  • Fehler: Die Datei wird nicht angehängt
    Lösung: Vergewissere dich, dass der Code .Attachments.Add ActiveWorkbook.FullName vor .Send platziert ist.


Alternative Methoden

Wenn du eine andere Methode zur Versendung von E-Mails in Excel verwenden möchtest, kannst du die Application.Dialogs(xlDialogSendMail) nutzen:

Application.Dialogs(xlDialogSendMail).Show Range("mail_recipients"), "Betreff.."

Diese Methode öffnet das Dialogfenster von Outlook und ermöglicht es dir, die E-Mail manuell zu versenden.


Praktische Beispiele

  1. E-Mail mit Anhang versenden: Nutze den oben genannten Code, um eine Arbeitsmappe als Anhang zu versenden.

  2. E-Mail ohne Anhang: Wenn du keine Datei anhängen möchtest, kannst du die Zeile .Attachments.Add ActiveWorkbook.FullName einfach aus dem Code entfernen.

  3. E-Mail an mehrere Empfänger: Halte die E-Mail-Adressen in einer einzigen Zelle oder in einer Spalte und passe den Code entsprechend an, um alle Empfänger zu erreichen.


Tipps für Profis

  • Verwende CC und BCC: Du kannst die Eigenschaften .CC und .BCC des objMail-Objekts nutzen, um Kopien an andere Empfänger zu senden.

  • Formatierung der E-Mail: Nutze HTML für besser formatierte E-Mails. Setze dazu objMail.HTMLBody anstelle von objMail.Body.

  • Fehlerbehandlung einbauen: Implementiere On Error Resume Next und On Error GoTo 0, um Fehler bei der Ausführung deines Codes abzufangen.


FAQ: Häufige Fragen

1. Kann ich die E-Mail auch ohne Outlook versenden?
Nein, dieser Code erfordert Outlook, um E-Mails zu versenden.

2. Was ist, wenn ich eine andere Excel-Version benutze?
Die oben genannten Methoden funktionieren in den meisten modernen Excel-Versionen, jedoch kann die Benutzeroberfläche leicht variieren.

3. Gibt es eine Möglichkeit, den Versand von E-Mails zeitlich zu planen?
Ja, du kannst den Code in eine geplante Aufgabe einfügen oder VBA verwenden, um den Versand zu einem späteren Zeitpunkt auszuführen.

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