Wie sende ich eine E-Mail in Outlook mit VBA?

Aktualisiert: August 2021; Anwendbar auf Microsoft Outlook 365 / 2019 / 2016

Hier ist eine Notiz, die wir von einem Leser bekommen haben.

Vielen Dank für Ihre sehr nützliche Outlook-Codierungshilfe. Ich frage mich, ob Sie Code teilen können, um das Senden einer E-Mail in Outlook zu automatisieren. Ich weiß, dass es mehrere Möglichkeiten gibt, wiederkehrende Nachrichten zu senden, aber ich bin speziell daran interessiert, VBA für diese Aufgabe zu verwenden.

Danke für die Frage. Das automatische Versenden von E-Mails scheint zu den nützlichsten und beliebtesten Aufgaben zu gehören, die Sie mit VBA automatisieren können. Lesen Sie weiter, um weitere Details und ein einfaches Skript für den Einstieg zu erhalten.

Schreiben von VBA zum Senden von Outlook-E-Mails

In dem recht einfachen Beispiel unten behandeln wir die folgenden Schritte:

  1. Zunächst verwenden wir das VBA-Outlook-Objektmodell, um ein neues E-Mail-Element zu erstellen.
  2. Dann legen wir die Wichtigkeit der Nachricht, die Empfänger (durch Semikolons getrennt) sowie den Stil und Inhalt des Textkörpers fest.
  3. Dann zeigen wir die Nachricht in Ihrer Microsoft Outlook-Anwendung an.
  4. Zuletzt werden wir fortfahren und es an die Empfänger senden.

Hier ist der einfache VBA-Code zum automatischen Erstellen und Senden einfacher E-Mails. Beachten Sie, dass Sie dieses Skript leicht verbessern müssen, um Dateianhänge, Aufgaben usw. einzufügen, aber beginnen wir mit einem sehr einfachen Skript.

Sub SendMail()
Dim MyEmail As MailItem
Set MyEmail = Application.CreateItem(olMailItem)

With MyEmail
.To = ""
.Importance = olImportanceHigh
.Subject = ""
.Body = ""
.BodyFormat = olFormatHTML
.Display
End With

'I purposely commented the next line, uncomment it by removing the "'" sign to send your email.
' MyEmail.Send
End Sub

Outlook-VBA-Makroverknüpfung

Vielleicht möchten Sie den gerade geschriebenen VBA-Code mit einer Befehlsschaltfläche in Outlook verknüpfen. Auf diese Weise können Sie es einfach über eine Verknüpfung in der Outlook-Multifunktionsleiste starten.

So geht's:

  1. Öffnen Sie zunächst Microsoft Outlook.
  2. Klicken Sie auf Datei und wählen Sie dann Optionen
  3. Gehen Sie jetzt weiter und wählen Sie Ribbon anpassen.
  4. Im Abschnitt Menüband anpassen sehen Sie das Listenfeld Befehle auswählen aus.
  5. Wählen Sie Makros
  6. Wählen Sie dann Ihren neu erstellten VBA-Code aus, in unserem Fall sollte der Name SendMail lauten.
  7. Klicken Sie dann auf Hinzufügen und dann auf OK. Optional können Sie Ihrem Makro ein Symbol zuweisen.
  8. Ihr Makro ist in der Symbolleiste für den Schnellzugriff oben links in Ihrer Outlook-Anwendung verfügbar.

Mögliche Probleme mit VBA-Makroeinstellungen

Ihre Outlook-Makroeinstellungen müssen möglicherweise angepasst werden, um Makros auszuführen. Wenn ja, hier ist, wie man das macht.

Bonus: Senden Sie eine E-Mail aus Outlook mit PowerShell

In PowerShell können Sie das Cmdlet Send-MailMessage zum Senden von E-Mails verwenden. Es erfordert jedoch eine Authentifizierung beim Mailserver und unterstützt keine modernen Authentifizierungsmethoden wie OAuth und Microsoft Modern Authentication. Daher ist es viel einfacher, eine E-Mail zu versenden, wenn auf Ihrem Computer ein Outlook-Profil konfiguriert ist.

Hier ist ein Beispiel für ein PowerShell-Skript, das Daten aus einer Excel Datei liest und ein Outlook-Profil zum Senden einer E-Mail verwendet Jeder Benutzer:

# Öffnen Sie die Excel-Datei
$ExcelObj = New-Object -comobject Excel.Application
$ExcelWorkBook = $ExcelObj.Workbooks.Open("C:\PS\user_list.xlsx")
$ExcelWorkSheet = $ExcelWorkBook.Sheets.Item("Sheet1")
# Ermitteln Sie die Anzahl der gefüllten Zeilen in einer XLSX-Datei
$rowcount=$ExcelWorkSheet.UsedRange.Rows.Count
# Durchlaufen Sie alle Zeilen in Spalte 1, beginnend mit der zweiten Zeile (diese Zellen enthalten die Benutzernamen und E-Mail-Adressen).
for($i=2;$i -le $rowcount;$i++){
$useremail = $ExcelWorkSheet.Columns.Item(1).Rows.Item($i).Text
$FullUsername =  $ExcelWorkSheet.Columns.Item(2).Rows.Item($i).Text
$Status =  $ExcelWorkSheet.Columns.Item(4).Rows.Item($i).Text
$pwdchange = $ExcelWorkSheet.Columns.Item(3).Rows.Item($i).Text
# Nachrichtentext generieren
$strSubj = " Ihr Kontostatus auf der woshub.com-Domain "
$strBody = "Lieber " + $FullUsername
$strBody = $strBody + " `r`n Ihr Konto in der Domäne woshub.com befindet sich in " + $Status
$strBody = $strBody + "`r`n Das Datum und die Uhrzeit der letzten Passwortänderung sind: " +  $pwdchange
$strfile="C:\ps\" + $useremail + ".txt"
# Wir gehen davon aus, dass Outlook ausgeführt wird. Andernfalls müssen Sie es mit dem Befehl $outlook = new-object -comobject outlook.application
starten $outlook = [Runtime.InteropServices.Marshal]::GetActiveObject("Outlook.Application")
$email = $outlook.CreateItem(0)
$email.To = $useremail
$email.Subject = $strSubj
$email.Body =  $strBody
# Hängen Sie eine Datei an (falls erforderlich)
$email.Attachments.add($strfile)
#senden Sie die E-Mail-Nachricht
$email.Send()

$ExcelWorkBook.close($true)

Powershell-Skript zum Senden von E-Mails aus dem in Outlook konfigurierten Profil

Dieses PowerShell-Skript geht davon aus, dass Outlook auf Ihrem Computer ausgeführt wird. Das Skript generiert den Betreff und den Text der E-Mail für jede SMTP-Empfängeradresse in der XLSX-Datei und hängt die Datei an. Dann wird die E-Mail gesendet.


Wie erstelle ich eine E-Mail-Vorlage in Microsoft Outlook.com 365?

Wie erstelle ich eine E-Mail-Vorlage in Microsoft Outlook.com 365?

Wie erstelle ich eine E-Mail-Vorlage in Microsoft Outlook.com 365?

Wie ändere ich die Farbe der Aufzählungszeichen in Word?

Wie ändere ich die Farbe der Aufzählungszeichen in Word?

In diesem Beitrag erfahren Sie, wie Sie die Farbe und Größe von Aufzählungslisten / Punkten in Excel, PowerPoint und Word 365 / 2016 / 2019 ändern.

Beenden und entfernen Sie doppelte E-Mail-Nachrichten in Outlook 2016 und 2019

Beenden und entfernen Sie doppelte E-Mail-Nachrichten in Outlook 2016 und 2019

Ist Ihr Postfach mit doppelten E-Mail-Einträgen übersät? Erfahren Sie, wie Sie den Empfang von redundanten Nachrichten in Outlook 365 / 2019 / 2016-Postfächern sowohl unter MAC als auch unter Windows stoppen und entfernen können.

Wie füge ich GIF-Bilder in Outlook 2016 / 2019 E-Mail-Text oder Signatur hinzu?

Wie füge ich GIF-Bilder in Outlook 2016 / 2019 E-Mail-Text oder Signatur hinzu?

Erfahren Sie, wie Sie ein GIF-Bild hinzufügen / einbetten und an Ihre ausgehende E-Mail von Outlook 2016 und 2019 senden.

Wie aktualisiere ich meine Outlook-Posteingangsmail, wenn sie nicht automatisch aktualisiert wird?

Wie aktualisiere ich meine Outlook-Posteingangsmail, wenn sie nicht automatisch aktualisiert wird?

Outlook-Posteingang wird nicht automatisch aktualisiert? Erfahren Sie, wie Sie Ihren Outlook 365 / 2019 / 2016 / 2013-Posteingang automatisch aktualisieren können.

Verhindern Sie, dass Outlook 365 / 2019 / 2016-Kalenderbenachrichtigungen für Besprechungen und Termine angezeigt werden

Verhindern Sie, dass Outlook 365 / 2019 / 2016-Kalenderbenachrichtigungen für Besprechungen und Termine angezeigt werden

Erfahren Sie, wie Sie Erinnerungen und Benachrichtigungen von Outlook 2016 / 2019-Kalendern deaktivieren, sowohl unter Windows als auch unter MAC.

Wie sende ich eine E-Mail in Outlook mit VBA?

Wie sende ich eine E-Mail in Outlook mit VBA?

Erfahren Sie, wie Sie Outlook-Makros schreiben, um das Versenden von E-Mails zu automatisieren.

Warum ist Outlook offline oder getrennt und wie kann ich die Verbindung wiederherstellen?

Warum ist Outlook offline oder getrennt und wie kann ich die Verbindung wiederherstellen?

Erfahren Sie, wie Sie verschiedene Probleme beim Trennen von Microsoft Outlook-Clients in Windows 10 diagnostizieren und beheben.

Outlook-Formulare: Wie erstelle ich ausfüllbare Formulare in Microsoft Office 2016 / 2019?

Outlook-Formulare: Wie erstelle ich ausfüllbare Formulare in Microsoft Office 2016 / 2019?

Erfahren Sie, wie Sie benutzerdefinierte Outlook-Benutzerformulare entwerfen und erstellen können.

Wie lässt sich Microsoft Outlook schneller ausführen (Versionen 2019 / 365/ 2016)?

Wie lässt sich Microsoft Outlook schneller ausführen (Versionen 2019 / 365/ 2016)?

Erfahren Sie, wie Sie Ihre Outlook-Leistung verbessern können.