Excel-Tutorial – E-Mails aus Excel versenden
Normalerweise versenden wir E-Mails über gängige E-Mail-Clients wie Outlook oder Gmail. Viele Anwender speichern ihre Daten jedoch in Excel-Arbeitsmappen und müssen im Arbeitsalltag bestimmte Inhalte gezielt an andere weiterleiten. Um Zeit zu sparen – insbesondere die, die sonst für die Bedienung eines separaten E-Mail-Clients benötigt würde – möchten sie E-Mails direkt aus der Excel-Arbeitsmappe heraus versenden. In diesem Schritt-für-Schritt-Tutorial zeigen wir Ihnen, wie Sie unter verschiedenen Bedingungen E-Mails direkt aus Excel versenden können.
Hinweis: Bevor Sie die folgenden Methoden anwenden, müssen Sie einen Outlook-E-Mail-Client auf Ihrem Computer einrichten und als Standard-E-Mail-Programm festlegen.
Inhaltsverzeichnis:[ Ausblenden ]
1. Grundlagen des E-Mail-Versands aus Excel
Dieser Abschnitt vermittelt die Grundlagen für das Versenden von E-Mails direkt aus Excel.
1,1 E-Mails aus Excel mit integrierten Excel-Funktionen versenden
Wenn Sie nur einfache E-Mails aus Excel versenden möchten, die lediglich die Felder An, Betreff, Cc und Nachrichtentext enthalten, können Ihnen die integrierten Funktionen von Excel helfen.
1,1.1 E-Mail aus Excel mithilfe einer Formel versenden
Wie in der folgenden Tabelle gezeigt, können Sie mithilfe der Zellbezüge vorgegebener Felder unterschiedliche Hyperlink-Formeln in Excel erstellen, um jeweils passende E-Mails zu versenden. Sobald die E-Mail-Hyperlinks erstellt sind, genügt ein Klick auf den gewünschten Link, um automatisch eine Nachricht zu versenden.
Hinweis: Wenn Sie mehrere Empfänger im Feld „An“ oder „Cc“ angeben, trennen Sie diese bitte durch Semikolons.

Dieser Abschnitt ist in vier Teile unterteilt, um Ihnen Schritt für Schritt zu zeigen, wie Sie dem Hyperlink-Formel separat eine E-Mail-Adresse, Cc-Empfänger, eine Betreffzeile und den Nachrichtentext hinzufügen. Gehen Sie dazu wie folgt vor:
Die Syntax und die Argumente der Funktion „HYPERLINK“ lauten wie folgt:
Syntax
HYPERLINK(link_location, [friendly_name])
Argumente
1,1.1,1 E-Mail-Adresse zur Hyperlink-Formel hinzufügen
Hier nutzen wir „mailto:“ innerhalb der Formel, um einen E-Mail-Empfänger hinzuzufügen. Da sich die E-Mail-Adresse des ersten Empfängers in Zelle B2 befindet, fügen wir „mailto:“ hinzu und verweisen auf Zelle B2.
“mailto:”&B2
1. Wählen Sie die Zelle aus, in der der Hyperlink angezeigt werden soll – in diesem Fall beispielsweise Zelle F2.
2. Geben Sie anschließend die folgende Formel ein.
=HYPERLINK("mailto:"&B2) 
Hinweis: Wenn Sie die „Enter“-Taste drücken, wird ein Hyperlink wie im folgenden Screenshot gezeigt erstellt. Sobald Sie auf den Link klicken, öffnet sich automatisch eine neue Outlook-E-Mail, und die Empfängeradresse wird direkt im Feld „An“ eingetragen.

Die E-Mail-Adresse des Empfängers wurde nun in die Hyperlink-Formel eingefügt. Fahren Sie mit den folgenden Schritten fort, um bei Bedarf Betreff, Cc-Empfänger und Nachrichtentext hinzuzufügen.
1,1.1,2 Cc-Empfänger zur Hyperlink-Formel hinzufügen
Um Cc-Empfänger zur Hyperlink-Funktion hinzuzufügen, ergänzen Sie die Formel einfach um „?cc=“ – so geht’s:
Die Formel in Zelle F2 sollte wie folgt lauten:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2) 
1,1.1,3 Betreffzeile zur Hyperlink-Formel hinzufügen
Um die Betreffzeile zur Hyperlink-Funktion hinzuzufügen, ergänzen Sie die Formel einfach um „&subject=“ – so geht’s:
Die Formel in Zelle F2 sollte nun wie folgt aussehen:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2) 
1,1.1,4 Nachrichtentext mit Zeilenumbrüchen zur Hyperlink-Formel hinzufügen
Im letzten Schritt wird der Nachrichtentext zur Hyperlink-Formel hinzugefügt. Wie im Beispiel zu sehen ist, sind zwei Textzeilen in Zelle E2 durch einen Zeilenumbruch getrennt – und Sie möchten diesen Zeilenumbruch im E-Mail-Nachrichtentext beibehalten. Erkennt Outlook in diesem Fall den Zeilenumbruch? Prüfen wir das gemeinsam.
Um den Nachrichtentext zur Hyperlink-Formel hinzuzufügen, fügen Sie „&body=“ wie folgt als Bestandteil der Formel ein.
Die Formel in Zelle F2 wird nun wie folgt angezeigt:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2) 
Hinweis: Wenn Sie die „Enter“-Taste drücken und anschließend auf den Link klicken, wird der Nachrichtentext in der neuen E-Mail in einer einzigen Zeile angezeigt.

Damit der Nachrichtentext in separaten Zeilen angezeigt wird, fügen Sie an der gewünschten Stelle im Zellinhalt den Wagenrücklauf-Zeichencode „%0A“ ein. Siehe Screenshot:

1,1.1,5 Den anzuzeigenden Text für den Hyperlink festlegen
In den obigen Schritten haben wir das Argument „Link_address“ mit den E-Mail-Feldern abgeschlossen. In diesem Abschnitt vervollständigen wir nun das nächste Argument: [friendly_name].
In diesem Fall soll in der Hyperlink-Zelle der Text „E-Mail an xx“ angezeigt werden, wobei „xx“ dem Namen des Empfängers in Zelle A2 entspricht. Die Formel in F2 sollte daher wie folgt angepasst werden:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2, "Email to "&A2) Drücken Sie die Enter-Taste, um Ihr Ergebnis zu erhalten.

Wählen Sie diese Formelzelle aus und ziehen Sie die dazugehörige „AutoAusfüll-Option“ nach unten, um weitere E-Mail-Hyperlinks zu generieren. Siehe Screenshot:

1,1.2 E-Mail aus Excel mithilfe der Hyperlink-Funktion versenden
Abgesehen von der oben genannten Hyperlink-Formel können Sie in Excel mithilfe der Funktion „Hyperlink einfügen“ manuell einen E-Mail-Hyperlink erstellen. Dieser Abschnitt führt Sie Schritt für Schritt durch den Vorgang.
1. Klicken Sie mit der rechten Maustaste auf die Zelle, in der Sie einen Hyperlink einfügen möchten, und wählen Sie im Kontextmenü „Link“ aus.

2. Konfigurieren Sie im erscheinenden Dialogfeld „Hyperlink erstellen“ Folgendes:

Durch einen Klick auf den Hyperlink wird eine Outlook-E-Mail mit den vorausgefüllten Feldern „An“, „Betreff“ und „Nachrichtentext“ erstellt – wie im folgenden Screenshot dargestellt.

Hinweise:
1,2 E-Mail an mehrere Empfänger in Zellen mit VBA-Skript versenden
Im obigen Beispiel sehen Sie, dass mehrere E-Mail-Adressen in einer Zelle durch Semikolons getrennt aufgeführt sind. Wenn Sie eine Liste von E-Mail-Adressen wie im folgenden Screenshot haben und eine gemeinsame oder separate E-Mail an alle Empfänger versenden möchten, unterstützt Sie der folgende VBA-Code dabei.

1,2.1 Eine E-Mail an mehrere Empfänger in Zellen mit VBA-Skript versenden
1. Öffnen Sie in dem Arbeitsblatt, das alle E-Mail-Adressen enthält, an die Sie die Nachricht senden möchten, mit der Tastenkombination „Alt“ + „F11“ das Fenster „Microsoft Visual Basic for Applications“.
2. Klicken Sie im Fenster „Microsoft Visual Basic for Applications“ auf „Einfügen“ > „Modul“ und fügen Sie anschließend den folgenden Code in das Modulfenster (Code) ein.

VBA-Code: E-Mail an eine Liste von E-Mail-Adresse senden
Sub sendmultiple()
'updateby Extendoffice 20220802
Dim xOTApp As Object
Dim xMItem As Object
Dim xCell As Range
Dim xRg As Range
Dim xEmailAddr As String
Dim xTxt As String
On Error Resume Next
xTxt = ActiveWindow.RangeSelection.Address
Set xRg = Application.InputBox("Please select the addresses list:", "Kutools for Excel", xTxt, , , , , 8)
If xRg Is Nothing Then Exit Sub
Set xOTApp = CreateObject("Outlook.Application")
For Each xCell In xRg
If xCell.Value Like "*@*" Then
If xEmailAddr = "" Then
xEmailAddr = xCell.Value
Else
xEmailAddr = xEmailAddr & ";" & xCell.Value
End If
End If
Next
Set xMItem = xOTApp.CreateItem(0)
With xMItem
.To = xEmailAddr
.Subject = "Test"
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
.Display
End With
End Sub 3. Drücken Sie die „F5“-Taste, um den Code auszuführen. Es öffnet sich das Dialogfeld „Kutools für Excel“. Wählen Sie die Liste mit den E-Mail-Adressen aus und klicken Sie auf „OK“.

Hinweise:
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel" Nach Ausführung des Codes werden alle E-Mail-Adressen aus dem ausgewählten Bereich im Feld „An“ des Nachrichtenfensters angezeigt. Siehe Screenshot:

1,2.2 Separate E-Mails an jeden in Zellen aufgeführten Empfänger mit VBA-Skript versenden
Der obige Code fügt alle E-Mail-Adressen aus dem markierten Bereich in das Feld „An“ des Nachrichtenfensters ein. Wenn Sie separate E-Mails an jede Adresse in den Zellen senden möchten, ohne dass die Empfänger die E-Mail-Adressen der anderen sehen können, verwenden Sie das folgende VBA-Skript.
1. Öffnen Sie in dem Arbeitsblatt, das alle E-Mail-Adressen enthält, an die Sie Nachrichten versenden möchten, mit der Tastenkombination „Alt“ + „F11“ das Fenster „Microsoft Visual Basic for Applications“.
2. Klicken Sie im Fenster „Microsoft Visual Basic for Applications“ auf „Einfügen“ > „Modul“ und fügen Sie anschließend den folgenden Code in das Modulfenster (Code) ein.
VBA-Code: Separate E-Mails an jede Adressliste in den Zellen senden
Sub SendEmailToAddressInCells()
'Updated by Extendoffice 20220802
Dim xRg As Range
Dim xRgEach As Range
Dim xRgVal As String
Dim xAddress As String
Dim xOutApp As Outlook.Application
Dim xMailOut As Outlook.MailItem
On Error Resume Next
xAddress = ActiveWindow.RangeSelection.Address
Set xRg = Application.InputBox("Please select the addresses list", "KuTools For Excel", xAddress, , , , , 8)
If xRg Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Set xOutApp = CreateObject("Outlook.Application")
Set xRg = xRg.SpecialCells(xlCellTypeConstants, xlTextValues)
For Each xRgEach In xRg
xRgVal = xRgEach.Value
If xRgVal Like "?*@?*.?*" Then
Set xMailOut = xOutApp.CreateItem(olMailItem)
With xMailOut
.To = xRgVal
.Subject = "Test"
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
.Display
'.Send
End With
End If
Next
Set xMailOut = Nothing
Set xOutApp = Nothing
Application.ScreenUpdating = True
End Sub 3. Klicken Sie anschließend auf „Extras“ > „Verweise“. Aktivieren Sie im Dialogfeld „Verweise – VBAProject“ das Kontrollkästchen „Microsoft Outlook 16,0 Object Library“ und bestätigen Sie mit „OK“, um Ihre Änderungen zu speichern.

4. Drücken Sie die „F5“-Taste, um den Code auszuführen. Es öffnet sich das Dialogfeld „Kutools für Excel“. Wählen Sie die Liste mit den E-Mail-Adressen aus und klicken Sie auf „OK“.

Hinweise:
.Subject = "Test"
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel" In diesem Beispiel befinden sich sechs E-Mail-Adressen im ausgewählten Bereich, weshalb automatisch sechs Outlook-Nachrichtenfenster mit jeweils separater Adressliste im Feld „An“ erstellt werden – wie im folgenden Screenshot gezeigt.

5. Klicken Sie abschließend auf die Schaltfläche „Senden“, um die E-Mails nacheinander zu versenden.
2. Anhang einfügen oder Outlook-Signatur in aus Excel versendeten E-Mails (mithilfe von VBA-Skripts)
Dieser Abschnitt zeigt Ihnen, wie Sie Anhänge einfügen oder die standardmäßige Outlook-Signatur in aus Excel versendeten E-Mails nutzen können.
2,1 Anhang einfügen in aus Excel gesendeten E-Mails
Hier stellen wir verschiedene Möglichkeiten zum Einfügen von Anhängen vor – wählen Sie einfach die Methode, die am besten zu Ihren Anforderungen passt. In diesem Abschnitt erfahren Sie, wie Sie vorgehen (klicken Sie auf einen der folgenden Links, um direkt zur gewünschten Methode zu gelangen):
2,1.1 Eine bestimmte Datei als Anhang per E-Mail versenden
Mit dem folgenden VBA-Code können Sie eine oder mehrere Dateien aus einem Ordner direkt aus Excel heraus als E-Mail-Anhänge versenden.
1. Drücken Sie die Tastenkombination „Alt“ + „F11“.
2. Klicken Sie im geöffneten Fenster „Microsoft Visual Basic for Applications“ auf „Einfügen“ > „Modul“ und fügen Sie anschließend den folgenden VBA-Code in das Modul-(Code)-Fenster ein.
VBA-Code: Dateien in einem Ordner als Anhänge aus Excel per E-Mail versenden
Sub EmailWithAttachments()
'Updated by Extendoffice 20220802
Dim xStrFile As String
Dim xFilePath As String
Dim xFileDlg As FileDialog
Dim xFileDlgItem As Variant
Dim xOutApp As Outlook.Application
Dim xMailOut As Outlook.MailItem
Application.ScreenUpdating = False
Set xOutApp = CreateObject("Outlook.Application")
Set xMailOut = xOutApp.CreateItem(olMailItem)
Set xFileDlg = Application.FileDialog(msoFileDialogFilePicker)
If xFileDlg.Show = -1 Then
With xMailOut
.BodyFormat = olFormatRichText
.To = "xxx@aaa.com"
.Subject = "test"
.HTMLBody = "test"
For Each xFileDlgItem In xFileDlg.SelectedItems
.Attachments.Add xFileDlgItem
Next xFileDlgItem
.Display
End With
End If
Set xMailOut = Nothing
Set xOutApp = Nothing
Application.ScreenUpdating = True
End Sub Hinweise:
3. Klicken Sie anschließend auf „Extras“ > „Verweise“. Suchen Sie im Dialogfeld „Verweise – VBAProject“ die Option „Microsoft Outlook 16,0 Object Library“, aktivieren Sie das zugehörige Kontrollkästchen und bestätigen Sie mit „OK“, um Ihre Änderungen zu speichern.

4. Drücken Sie die Taste „F5“, um den Code auszuführen. Anschließend öffnet sich ein „Durchsuchen“-Fenster. Wählen Sie die Dateien aus, die Sie der E-Mail beifügen möchten, und klicken Sie dann auf „OK“.

Anschließend öffnet sich ein Nachrichtenfenster, in dem die ausgewählten Dateien im Feld „Angehängt“ als Anhänge angezeigt werden.

2,1.2 Die Aktuelles Arbeitsblatt als Anhang per E-Mail versenden
Wenn Sie das aktuelle Arbeitsblatt direkt aus Excel als E-Mail-Anhang versenden möchten, nutzen Sie einfach das VBA-Skript in diesem Abschnitt.
1. Drücken Sie die Tasten „Alt“ + „F11“.
2. Klicken Sie im geöffneten Fenster „Microsoft Visual Basic for Applications“ auf „Einfügen“ > „Modul“ und fügen Sie anschließend den folgenden VBA-Code in das erscheinende „Modul-(Code)“-Fenster ein.
VBA-Code: Die Aktuelles Arbeitsblatt als Anhang per E-Mail versenden
Sub SendWorkSheet()
'Update by Extendoffice 20220802
Dim xFile As String
Dim xFormat As Long
Dim Wb As Workbook
Dim Wb2 As Workbook
Dim FilePath As String
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Application.ScreenUpdating = False
Set Wb = Application.ActiveWorkbook
ActiveSheet.Copy
Set Wb2 = Application.ActiveWorkbook
Select Case Wb.FileFormat
Case xlOpenXMLWorkbook:
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
Case xlOpenXMLWorkbookMacroEnabled:
If Wb2.HasVBProject Then
xFile = ".xlsm"
xFormat = xlOpenXMLWorkbookMacroEnabled
Else
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
End If
Case Excel8:
xFile = ".xls"
xFormat = Excel8
Case xlExcel12:
xFile = ".xlsb"
xFormat = xlExcel12
End Select
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format(Now, "dd-mmm-yy h-mm-ss")
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "kte features"
.Body = "Please check and read this document."
.Attachments.Add Wb2.FullName
.Display
'.Send
End With
Wb2.Close
Kill FilePath & FileName & xFile
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Application.ScreenUpdating = True
End Sub Hinweise:
3. Drücken Sie die Taste „F5“, um den Code auszuführen. Anschließend wird das aktuelle Arbeitsblatt als Excel-Arbeitsmappe gespeichert und automatisch als Anhang in ein Nachrichtenfenster eingefügt. Siehe Screenshot:

Hinweis: Die angehängte Arbeitsmappe, die ausschließlich das aktuelle Arbeitsblatt enthält, trägt denselben Namen wie die ursprüngliche Arbeitsmappe – ergänzt um den Zeitpunkt, zu dem Sie den Code ausgeführt haben.
2,1.3 Die Aktuelle Arbeitsmappe als Anhang per E-Mail versenden
Nachdem Sie den VBA-Code kennengelernt haben, mit dem Sie das aktuelle Arbeitsblatt direkt aus Excel heraus als E-Mail-Anhang versenden können, stellen wir Ihnen hier ein weiteres VBA-Skript zur Verfügung – dieses ermöglicht es Ihnen, die gesamte Arbeitsmappe als Anhang zu versenden. Gehen Sie dazu wie folgt vor:
1. Drücken Sie die Tasten „Alt“ + „F11“.
2. Klicken Sie im geöffneten Fenster „Microsoft Visual Basic for Applications“ auf „Einfügen“ > „Modul“ und fügen Sie anschließend den folgenden VBA-Code in das Modul-(Code-)Fenster ein.
VBA-Code: Die Aktuelle Arbeitsmappe als Anhang aus Excel per E-Mail versenden
Sub SendWorkBook()
'Update by Extendoffice 20220802
Dim OutlookApp As Object
Dim OutlookMail As Object
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
On Error Resume Next
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "kte feature"
.Body = "Hello, please check and read this document, thank you."
.Attachments.Add Application.ActiveWorkbook.FullName
.Display
'.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub Hinweise:
3. Drücken Sie die Taste „F5“, um den Code auszuführen – die aktuelle Arbeitsmappe wird dann automatisch als Anhang in das Nachrichtenfenster eingefügt. Siehe Screenshot:

2,1.4 Die gesamte Arbeitsmappe als PDF-Anhang per E-Mail versenden
Die meisten Benutzer speichern eine Excel-Arbeitsmappe üblicherweise als PDF-Datei und versenden sie anschließend als Anhang. In diesem Abschnitt zeige ich Ihnen eine Methode, mit der Sie direkt aus Excel heraus eine E-Mail versenden können – mit der aktuell geöffneten Arbeitsmappe als PDF-Anhang, ohne diese vorher manuell als PDF speichern zu müssen.
1. Drücken Sie die Tasten „Alt“ + „F11“.
2. Klicken Sie im geöffneten Fenster „Microsoft Visual Basic for Applications“ auf „Einfügen“ > „Modul“ und fügen Sie anschließend den folgenden VBA-Code in das Modul-(Code-)Fenster ein.
VBA-Code: Die gesamte Arbeitsmappe als PDF-Anhang per E-Mail versenden
Sub SendWorkBookAsPDF()
'Update 20220803
Dim Wb As Workbook
Dim FilePath As String
Dim FileName As String
Dim xOutApp As Object
Dim xOutMail As Object
On Error Resume Next
Application.ScreenUpdating = False
Set Wb = Application.ActiveWorkbook
FileName = Left(Wb.Name, (InStrRev(Wb.Name, ".", -1, vbTextCompare) - 1)) & Format(Now, "dd-mmm-yy h-mm-ss") & ".pdf"
FilePath = Environ$("temp") & "\" & FileName
Wb.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
FilePath, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
With xOutMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "test"
.Body = "test"
.Attachments.Add FilePath
.Display 'or use .Send
End With
Kill FilePath
Set xOutMail = Nothing
Set xOutApp = Nothing
Application.ScreenUpdating = True
End Sub Hinweise:
3. Drücken Sie die Taste „F5“, um den Code auszuführen. Anschließend wird die aktuelle Arbeitsmappe automatisch als PDF-Anhang in ein neues Nachrichtenfenster eingefügt. Siehe Screenshot:

2,1.5 Das Aktuelles Arbeitsblatt als PDF-Anhang per E-Mail versenden
Angenommen, Sie haben eine Arbeitsmappe mit dem Namen „Monatlicher Umsatz“ und in einem Arbeitsblatt namens „Umsatzbericht“ einen fertigen Umsatzbericht erstellt – dann hilft Ihnen der folgende VBA-Code dabei, dieses Arbeitsblatt als PDF-Datei an Ihre Kollegen zu versenden.
1. Drücken Sie die Tasten „Alt“ + „F11“.
2. Klicken Sie im geöffneten Fenster „Microsoft Visual Basic for Applications“ auf „Einfügen“ > „Modul“ und fügen Sie anschließend den folgenden VBA-Code in das Modul-(Code)-Fenster ein.
VBA-Code: Das Aktuelles Arbeitsblatt als PDF-Anhang per E-Mail versenden
Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "test"
.Body = "test"
.Attachments.Add FileName
.Display
'.Send
End With
Kill FileName
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub Hinweise:
3. Drücken Sie die Taste „F5“, um den Code auszuführen. Anschließend wird das aktuelle Arbeitsblatt automatisch als PDF-Anhang in ein neues Nachrichtenfenster eingefügt. Siehe Screenshot:

2,2 Outlook-Signatur in die aus Excel gesendeten E-Mails einfügen
Am obigen Beispiel wird deutlich: Sie wenden den oben genannten VBA-Code an, um das aktuelle Arbeitsblatt als PDF-Anhang direkt aus Excel heraus zu versenden – doch die Outlook-Signatur wird dabei nicht in das Nachrichtenfenster eingefügt. Mit der folgenden Methode behalten Sie Ihre standardmäßige Outlook-Signatur in der aus Excel gesendeten E-Mail bei.
Im Folgenden finden Sie zwei VBA-Codes.
VBA-Code 1: Dieser Code bewahrt Ihre Outlook-Signatur.
VBA-Code 2: Dieser Code versendet das aktuelle Arbeitsblatt als PDF-Anhang per E-Mail.
VBA-Code 1: Outlook-Signatur beibehalten
.HTMLBody = "Email body" & "
" & .HTMLBody VBA-Code 2: Das Aktuelles Arbeitsblatt als PDF-Anhang per E-Mail versenden
Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "test"
.Body = "test"
.Attachments.Add FileName
.Display
'.Send
End With
Kill FileName
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub 1. Normalerweise öffnen Sie das Fenster „Microsoft Visual Basic for Applications“, indem Sie die Tasten „Alt“ + „F11“ drücken.
2. Klicken Sie im Fenster „Microsoft Visual Basic for Applications“ auf „Einfügen“ > „Modul“ und fügen Sie anschließend den oben genannten VBA-Code 2 in das Modul-(Code)-Fenster ein.
3. Um die standardmäßige Outlook-Signatur in der aus Excel versendeten E-Mail beizubehalten, passen Sie den VBA-Code 2 wie folgt an:

Hier ist der vollständige, angepasste Code.
Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
.Display
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "test"
.HTMLBody = "Email body" & "
" & .HTMLBody
.Attachments.Add FileName
'.Send
End With
Kill FileName
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub 4. Drücken Sie die Taste „F5“, um den Code auszuführen. Anschließend öffnet sich ein neues Nachrichtenfenster, in dem das aktuelle Arbeitsblatt als PDF-Datei angehängt ist und die standardmäßige Outlook-Signatur automatisch am Ende des E-Mail-Texts eingefügt wird.

3. Automatisches Versenden von E-Mails aus Excel, sobald eine Bedingung erfüllt ist (mithilfe von VBA-Skripts)
In den obigen Beispielen müssen Sie den Code manuell ausführen, um die E-Mail zu versenden. Möchten Sie ihn jedoch automatisch auslösen, sobald eine bestimmte Bedingung eintritt – etwa wenn eine Zelle einen bestimmten Wert erreicht, sich ihr Inhalt ändert oder ein vorgegebenes Datum erreicht ist –, wird die E-Mail automatisch versandt. Dieser Abschnitt listet jene Bedingungen auf, nach denen Excel-Nutzer häufig bei Google gesucht haben, um E-Mails direkt aus Excel heraus automatisch versenden zu können, sobald die jeweilige Bedingung erfüllt ist.
3,1 Automatisches Versenden einer E-Mail, wenn eine Zelle einen bestimmten Wert erreicht
Wie im folgenden Screenshot gezeigt, nehmen wir an, Sie verfügen über eine Verkaufstabelle, in der sich in Zelle D6 die Gesamtsumme der Verkäufe befindet. Sobald diese Summe 10.000 übersteigt, soll automatisch eine E-Mail an Ihren Vorgesetzten erstellt und versendet werden – liegt die Summe hingegen bei 10.000 oder darunter, erfolgt keine Aktion.

1. Klicken Sie mit der rechten Maustaste auf die Blattregisterkarte des Arbeitsblatts mit der Verkaufstabelle und wählen Sie im Kontextmenü „Code anzeigen“.

2. Fügen Sie im geöffneten Fenster „Microsoft Visual Basic for Applications“ den folgenden VBA-Code in das Fenster „Blatt (Code)“ ein.

VBA-Code: Automatisches Versenden einer E-Mail, wenn eine Zelle in Excel einen bestimmten Wert erreicht
Dim xRg As Range
'Update by Extendoffice 20200803
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Cells.Count > 1 Then Exit Sub
Set xRg = Intersect(Range("D6"), Target)
If xRg Is Nothing Then Exit Sub
If IsNumeric(Target.Value) And Target.Value > 10000 Then
Call Mail_small_Text_Outlook
End If
End Sub
Sub Mail_small_Text_Outlook()
Dim xOutApp As Object
Dim xOutMail As Object
Dim xMailBody As String
Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")
On Error Resume Next
With xOutMail
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.Subject = "test"
.Body = xMailBody
.Display 'or use .Send
End With
On Error GoTo 0
Set xOutMail = Nothing
Set xOutApp = Nothing
End Sub
Private Sub Worksheet_Calculate()
Dim xI As Integer
Dim xRg As Range
Set xRg = Range("D6")
On Error GoTo Err01
xI = Int(xRg.Value)
If xI > 10000 Then
Call Mail_small_Text_Outlook
End If
Err01:
End Sub Hinweise:
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6") Ab sofort wird automatisch eine E-Mail erstellt, sobald der Wert in Zelle D6 10.000 übersteigt – wie im folgenden Screenshot gezeigt.

3,2 Automatisches Versenden einer E-Mail, wenn sich ein Zellwert ändert
Wie im folgenden Screenshot gezeigt, nehmen wir an, Sie erhalten eine Arbeitsmappe, die monatliche Verkäufe in verschiedenen Arbeitsblättern sowie die Gesamtsumme der Verkäufe in einem separaten Arbeitsblatt enthält. Sie müssen die Gesamtsumme überprüfen und – falls sie geändert wurde – die Arbeitsmappe an den Absender zurücksenden sowie ihn darüber informieren, dass die Zelle geändert wurde.

1. Klicken Sie mit der rechten Maustaste auf die Blattregisterkarte des Arbeitsblatts, das Ihre Verkaufstabelle enthält, und wählen Sie im Kontextmenü „Code anzeigen“.

2. Fügen Sie im geöffneten Fenster „Microsoft Visual Basic for Applications“ den folgenden VBA-Code in das Codefenster des entsprechenden Arbeitsblatts ein.
VBA-Code: Automatisches Versenden einer E-Mail, wenn sich der Wert einer bestimmten Zelle ändert
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20220803
Dim xRgSel As Range
Dim xOutApp As Object
Dim xMailItem As Object
Dim xMailBody As String
Dim xBoolean As Boolean
Dim xItsRG As Range
Dim xDDs As Range
Dim xDs As Range
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False
xBoolean = False
Set xRg = Range("B14")
Set xItsRG = Intersect(Target, xRg)
Set xDDs = Intersect(Target.DirectDependents, xRg)
Set xDs = Intersect(Target.Dependents, xRg)
If Not (xItsRG Is Nothing) Then
Set xRgSel = xItsRG
xBoolean = True
ElseIf Not (xDDs Is Nothing) Then
Set xRgSel = xDDs
xBoolean = True
ElseIf Not (xDs Is Nothing) Then
Set xRgSel = xDs
xBoolean = True
End If
ActiveWorkbook.Save
If xBoolean Then
Debug.Print xRgSel.Address
Set xOutApp = CreateObject("Outlook.Application")
Set xMailItem = xOutApp.CreateItem(0)
xMailBody = "The cell " & xRgSel.Address(False, False) & _
" in the worksheet '" & Me.Name & "' were modified on " & _
Format$(Now, "mm/dd/yyyy") & " at " & Format$(Now, "hh:mm:ss") & _
" by " & Environ$("username") & "."
With xMailItem
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.Subject = "Worksheet modified"
.Body = xMailBody
.Attachments.Add (ThisWorkbook.FullName)
.Display
End With
Set xRgSel = Nothing
Set xOutApp = Nothing
Set xMailItem = Nothing
End If
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub Hinweise: Im Code
Ab sofort wird automatisch eine Outlook-Nachricht erstellt, sobald sich der Wert in Zelle B14 ändert – wie im folgenden Screenshot veranschaulicht.

3,3 Automatisches Versenden einer E-Mail beim Speichern einer Arbeitsmappe
Wenn Sie eine Arbeitsmappe haben, die nach Änderungen mit anderen geteilt werden muss, speichern Sie sie normalerweise, starten Ihren E-Mail-Client, erstellen eine neue E-Mail mit der Arbeitsmappe als Anhang, füllen die entsprechenden Felder aus und senden die Nachricht ab. In diesem Abschnitt zeigen wir Ihnen eine Methode, bei der beim Speichern der Arbeitsmappe automatisch eine E-Mail erstellt wird. Gehen Sie dazu wie folgt vor.
1. Drücken Sie „Alt“ + „F11“, um das Fenster „Microsoft Visual Basic for Applications“ zu öffnen.
2. Doppelklicken Sie in diesem Fenster im Bereich „Projekt“ auf „DieseArbeitsmappe“ und fügen Sie anschließend den folgenden VBA-Code in das Fenster „DieseArbeitsmappe (Code)“ ein.

VBA-Code: Automatisches Versenden einer E-Mail beim Speichern einer Arbeitsmappe
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
'Updated by Extendoffice 20220804
Dim xOutApp As Object
Dim xMailItem As Object
Dim xName As String
On Error Resume Next
Set xOutApp = CreateObject("Outlook.Application")
Set xMailItem = xOutApp.CreateItem(0)
xName = ActiveWorkbook.FullName
With xMailItem
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.Subject = "The workbook has been updated"
.Body = "Hi," & Chr(13) & Chr(13) & "File is now updated."
.Attachments.Add xName
.Display
'.send
End With
Set xMailItem = Nothing
Set xOutApp = Nothing
End Sub Hinweise: Im Code
3. Ab sofort wird beim Speichern der Arbeitsmappe – entweder per Tastenkombination „Strg“ + „S“ oder durch Klicken auf die Schaltfläche „Speichern“ – automatisch eine Outlook-E-Mail erstellt. Die aktuelle Arbeitsmappe wird als Anhang hinzugefügt und die Felder mit dem festgelegten Inhalt ausgefüllt. Siehe Screenshot:

Tipp: Wenn Sie diese Arbeitsmappe häufig nutzen, empfiehlt es sich, sie als „Excel-Arbeitsmappe mit aktivierten Makros“ zu speichern, um das VBA-Skript für die zukünftige Verwendung zu erhalten. Gehen Sie dazu wie folgt vor:

3,4 Automatisches Versenden einer E-Mail zu einem bestimmten Zeitpunkt
Angenommen, Sie möchten jeden Freitagmorgen um 9 Uhr automatisch eine E-Mail mit einer Arbeitsmappe zur Aufgabenvergabe versenden – ganz ohne manuelles Öffnen Ihres E-Mail-Clients. In diesem Abschnitt erfahren Sie, wie das in Excel funktioniert.
1. Drücken Sie „Alt“ + „F11“, um das Fenster „Microsoft Visual Basic for Applications“ zu öffnen.
2. Klicken Sie im Fenster „Microsoft Visual Basic for Applications“ auf „Einfügen“ > „Modul“ und fügen Sie anschließend den folgenden VBA-Code in das Modulfenster ein.

VBA-Code 1: Die Aktuelle Arbeitsmappe als Anhang aus Excel per E-Mail versenden
Sub Timer()
If Weekday(Date) = vbFriday Then
SendWorkBook
Application.OnTime TimeValue("09:00:00"), "Timer"
Else
Application.OnTime TimeValue("09:00:00"), "Timer"
End If
End Sub
Sub SendWorkBook()
'Update by Extendoffice 20220802
Dim OutlookApp As Object
Dim OutlookMail As Object
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
On Error Resume Next
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "kte feature"
.Body = "Hello, please check and read this document, thank you."
.Attachments.Add Application.ActiveWorkbook.FullName
.Display
'.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub 3. Doppelklicken Sie in diesem Fenster im Bereich „Projekt“ auf „DieseArbeitsmappe“ und fügen Sie anschließend den folgenden VBA-Code in das Fenster „DieseArbeitsmappe (Code)“ ein.

VBA-Code 2: Automatisches Senden einer E-Mail zu einem bestimmten Zeitpunkt
Private Sub Workbook_Open()
Application.OnTime TimeValue("09:00:00"), "Timer"
End Sub Hinweise:
4. Speichern Sie die Codes und anschließend die Arbeitsmappe wie folgt als makrofähige Excel-Arbeitsmappe.

5. Öffnen Sie Ihre gespeicherte makrofähige Arbeitsmappe – sobald der festgelegte Tag und die Uhrzeit erreicht sind, wird automatisch eine E-Mail erstellt oder versendet.
4. Zusätzliche Themen
Dieser Abschnitt fasst weitere Themen zusammen, auf die Sie beim Versenden von E-Mails aus Excel stoßen könnten.
4,1 Einen Zellbereich aus Excel per E-Mail versenden (mit VBA-Skript)
Angenommen, in einem Excel-Arbeitsblatt befindet sich eine monatliche Verkaufstabelle wie im folgenden Screenshot gezeigt, und Sie möchten diese entweder als Textinhalt einer E-Mail versenden oder direkt als Anhang beifügen. Dafür stellen wir Ihnen zwei Methoden zur Verfügung.

4,1.1 Einen Zellbereich als Teil des E-Mail-Textinhalts aus Excel versenden
Mit dem folgenden VBA-Code können Sie einen Zellbereich direkt aus Excel als Teil des E-Mail-Textinhalts versenden.
1. Drücken Sie „Alt“ + „F11“, um das Fenster „Microsoft Visual Basic for Applications“ zu öffnen.
2. Klicken Sie im Fenster „Microsoft Visual Basic for Applications“ auf „Extras“ > „Verweise“, aktivieren Sie das Kontrollkästchen „Microsoft Outlook 16,0 Object Library“ und bestätigen Sie Ihre Auswahl im Dialogfeld „Verweise – VBAProject“ mit einem Klick auf „OK“.

3. Klicken Sie auf „Einfügen“ > „Modul“ und fügen Sie anschließend den folgenden VBA-Code in das Modul-Fenster (Code) ein.
VBA-Code: Einen Zellbereich als Teil des E-Mail-Textinhalts aus Excel versenden
Sub SendARangeofCells()
'Updated by Extendoffice 20220809
Dim xRg As Range
Dim I, J As Long
Dim xAddress As String
Dim xMailOut As Object
Dim xOutApp As Object
On Error Resume Next
Set xOutApp = CreateObject("Outlook.Application")
Set xMailOut = xOutApp.CreateItem(olMailItem)
xAddress = ActiveWindow.RangeSelection.Address
Set xRg = Application.InputBox("Please select range you need to paste into email body", "KuTools For Excel", xAddress, , , , , 8)
If xRg Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Set xOutApp = CreateObject("Outlook.Application")
Set xMailOut = xOutApp.CreateItem(olMailItem)
With xMailOut
.Subject = "test"
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.HTMLBody = RangetoHTML(xRg)
.Display
'.Send
End With
Set xMailOut = Nothing
Set xOutApp = Nothing
Application.ScreenUpdating = True
End Sub
' The following VBA script is cited from this page:
' https://stackoverflow.com/questions/18663127/paste-excel-range-in-outlook
Function RangetoHTML(rng As Range)
' By Ron de Bruin.
Dim fso As Object
Dim ts As Object
Dim TempFile As String
Dim TempWB As Workbook
TempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
'Copy the range and create a new workbook to past the data in
rng.Copy
Set TempWB = Workbooks.Add(1)
With TempWB.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial xlPasteValues, , False, False
.Cells(1).PasteSpecial xlPasteFormats, , False, False
.Cells(1).Select
Application.CutCopyMode = False
On Error Resume Next
.DrawingObjects.Visible = True
.DrawingObjects.Delete
On Error GoTo 0
End With
'Publish the sheet to a htm file
With TempWB.PublishObjects.Add( _
SourceType:=xlSourceRange, _
Filename:=TempFile, _
Sheet:=TempWB.Sheets(1).Name, _
Source:=TempWB.Sheets(1).UsedRange.Address, _
HtmlType:=xlHtmlStatic)
.Publish (True)
End With
'Read all data from the htm file into RangetoHTML
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
RangetoHTML = ts.ReadAll
ts.Close
RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
"align=left x:publishsource=")
'Close TempWB
TempWB.Close savechanges:=False
'Delete the htm file we used in this function
Kill TempFile
Set ts = Nothing
Set fso = Nothing
Set TempWB = Nothing
End Function Hinweise: Im Code
4. Drücken Sie die Taste „F5“, um den Code auszuführen. Wählen Sie im anschließend angezeigten Dialogfeld „Kutools für Excel“ den Zellbereich aus, den Sie als Teil des E-Mail-Textinhalts versenden möchten, und klicken Sie auf „OK“. Siehe Screenshot:

Dann wird automatisch eine Outlook-E-Mail erstellt, und der in Ihrem Arbeitsblatt ausgewählte Bereich erscheint bereits im E-Mail-Text. Siehe Screenshot:

4,1.2 Einen Zellbereich als Anhang aus Excel versenden
Möchten Sie einen Zellbereich aus einem Excel-Arbeitsblatt als E-Mail-Anhang versenden, können Sie den folgenden VBA-Code nutzen.
1. Drücken Sie die Tastenkombination „Alt“ + „F11“.
2. Klicken Sie im geöffneten Fenster „Microsoft Visual Basic for Applications“ auf „Einfügen“ > „Modul“ und fügen Sie anschließend den folgenden VBA-Code in das Modulfenster (Code) ein.
VBA-Code: Einen Zellbereich als Anhang aus Excel versenden
Sub SendRange()
'Update 20220809
Dim xFile As String
Dim xFormat As Long
Dim Wb As Workbook
Dim Wb2 As Workbook
Dim Ws As Worksheet
Dim FilePath As String
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
Dim WorkRng As Range
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set Wb = Application.ActiveWorkbook
Wb.Worksheets.Add
Set Ws = Application.ActiveSheet
WorkRng.Copy Ws.Cells(1, 1)
Ws.Copy
Set Wb2 = Application.ActiveWorkbook
Select Case Wb.FileFormat
Case xlOpenXMLWorkbook:
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
Case xlOpenXMLWorkbookMacroEnabled:
If Wb2.HasVBProject Then
xFile = ".xlsm"
xFormat = xlOpenXMLWorkbookMacroEnabled
Else
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
End If
Case Excel8:
xFile = ".xls"
xFormat = Excel8
Case xlExcel12:
xFile = ".xlsb"
xFormat = xlExcel12
End Select
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format(Now, "dd-mmm-yy h-mm-ss")
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.Subject = "Monthly sales for 2021"
.Body = "Hello, please check and read this document. "
.Attachments.Add Wb2.FullName
.Display
'.Send
End With
Wb2.Close
Kill FilePath & FileName & xFile
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Ws.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub Hinweise:
3. Drücken Sie die Taste „F5“, um den Code auszuführen. Wählen Sie im anschließend angezeigten Dialogfeld „Kutools für Excel“ den Zellbereich aus, den Sie als E-Mail-Anhang versenden möchten, und klicken Sie auf „OK“. Siehe Screenshot:

Dann wird automatisch eine Outlook-E-Mail erstellt: Der in Ihrem Arbeitsblatt ausgewählte Zellbereich wird als Excel-Arbeitsmappe gespeichert und im Nachrichtenfenster angehängt. Siehe Screenshot:

4,2 E-Mails versenden, wenn in Excel auf eine Schaltfläche geklickt wird
Wenn Sie durch Anklicken einer Befehlsschaltfläche ein Makro zum Versenden einer E-Mail aus Excel auslösen möchten – beispielsweise die Aktuelle Arbeitsmappe als Anhang an andere Personen senden, indem Sie auf eine Befehlsschaltfläche im Arbeitsblatt klicken – können Sie die folgenden Schritte ausführen, um dies zu erreichen.
1. Klicken Sie auf „Entwickler“ > „Einfügen“ > „Befehlsschaltfläche (ActiveX-Steuerelement)“ und zeichnen Sie anschließend eine Befehlsschaltfläche in Ihr Arbeitsblatt.
Tipp: Wenn Sie bereits eine Befehlsschaltfläche haben, überspringen Sie diesen Schritt.

2. Drücken Sie die Tastenkombination „Alt“ + „F11“, um das Fenster „Microsoft Visual Basic for Applications“ zu öffnen. Klicken Sie anschließend auf „Einfügen“ > „Modul“ und fügen Sie den VBA-Code – also den Code zum Versenden der aktuellen Arbeitsmappe als Anhang aus Excel – in das Fenster „Modul (Code)“ ein.
Klicken Sie hier, um den Code zu erhalten.

Hinweis: Der Name des Makros, das Sie in Schritt 2 erstellt haben, lautet hier „SendWorkbook“.
3. Drücken Sie die Tastenkombination „Alt“ + „Q“, um das Fenster „Microsoft Visual Basic for Applications“ zu schließen.
4. Jetzt weisen Sie das Makro der Befehlsschaltfläche zu: Klicken Sie mit der rechten Maustaste darauf und wählen Sie im Kontextmenü „Code anzeigen“.

5. Anschließend öffnet sich das Fenster „Microsoft Visual Basic for Applications“. Im Fenster „Tabelle (Code)“ sehen Sie die folgenden beiden Zeilen aufgeführt.
Private Sub CommandButton1_Click()
End Sub 
6. Geben Sie den Namen des vorhandenen Makros innerhalb der Unterroutine der Befehlsschaltfläche ein.

7. Drücken Sie „Alt“ + „Q“, um den Visual Basic-Editor zu schließen, und klicken Sie auf „Entwickler“ > „Entwurfsmodus“, um den Entwurfsmodus zu verlassen.

Sie können nun auf die Befehlsschaltfläche klicken, um eine E-Mail mit der aktuellen Arbeitsmappe als Anhang zu versenden.
4,3 E-Mails von einem festgelegten E-Mail-Konto aus versenden
Normalerweise verwendet Excel beim Versand einer E-Mail per VBA-Code das Standard-E-Mail-Konto in Outlook als Absender. Falls Sie mehrere E-Mail-Konten in Outlook eingerichtet haben und stattdessen ein bestimmtes Konto – und nicht das Standardkonto – zum Versenden der E-Mails aus Excel nutzen möchten, hilft Ihnen der folgende VBA-Code weiter.
In diesem Fall sind folgende Codes erforderlich.
VBA-Code 1:
Dim OutlookMail As Outlook.MailItem VBA-Code 2:
For Each xAccount In OutlookApp.Session.Accounts
If VBA.LCase(xAccount.SmtpAddress) = VBA.LCase("zxm@addin99.com") Then 'Specify your email account here
OutlookMail.SendUsingAccount = xAccount
End If
Next Wie verwendet man die oben genannten VBA-Codes?
In diesem Beispiel legen wir ein bestimmtes E-Mail-Konto fest, um die aktuelle Arbeitsmappe direkt aus Excel als Anhang zu versenden. Gehen Sie dazu wie folgt vor:
1. Drücken Sie die Tastenkombination „Alt“ + „F11“. Klicken Sie im Fenster „Microsoft Visual Basic for Applications“ auf „Extras“ > „Verweise“, aktivieren Sie das Kontrollkästchen „Microsoft Outlook 16,0 Object Library“ und bestätigen Sie mit „OK“ im Dialogfeld „Verweise – VBAProject“.

2. Klicken Sie auf „Einfügen“ > „Modul“ und fügen Sie anschließend den folgenden VBA-Code in das Fenster „Modul (Code)“ ein.
VBA-Code: Die Aktuelle Arbeitsmappe als E-Mail-Anhang aus Excel über ein festgelegtes Outlook-Konto versenden
Sub SendWorkBook()
'Update by Extendoffice 20220809
Dim OutlookApp As Object
Dim OutlookMail As Outlook.MailItem 'important! Here can’t be declared as Object
Dim xAccount As Account
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(olMailItem)
On Error Resume Next
'The following lines helps to specify a certian email account
For Each xAccount In OutlookApp.Session.Accounts
If VBA.LCase(xAccount.SmtpAddress) = VBA.LCase("zxm@addin99.com") Then 'Specify your email account here
OutlookMail.SendUsingAccount = xAccount
End If
Next
'End
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "kte feature"
.Body = "Hello, please check and read this document, thank you."
.Attachments.Add Application.ActiveWorkbook.FullName
.Display
'.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub 3. Drücken Sie die Taste „F5“, um den Code auszuführen. Anschließend öffnet sich eine Outlook-E-Mail-Nachricht, in der das Feld „Von“ mit dem in Ihrem Code festgelegten E-Mail-Konto ausgefüllt ist.
4,4 Eine E-Mail versenden, sobald ein Datum erreicht ist
Wenn Sie eine E-Mail basierend auf einem bestimmten Fälligkeitsdatum versenden möchten – beispielsweise anhand der folgenden Projekttabelle –, wird automatisch eine Nachricht an die jeweiligen Projektverantwortlichen gesendet, sobald das Fälligkeitsdatum in Spalte E2:E7 höchstens sieben Tage vom heutigen Tag entfernt ist (angenommen, das aktuelle Datum ist der 04,08.2022). So werden sie rechtzeitig darüber informiert, dass das Projekt bald ausläuft.

1. Klicken Sie mit der rechten Maustaste auf die Blattregisterkarte des Arbeitsblatts, das Ihre Projekttabelle enthält, und wählen Sie im Kontextmenü „Code anzeigen“.

2. Fügen Sie im geöffneten Fenster „Microsoft Visual Basic for Applications“ den folgenden VBA-Code in das Fenster „Tabelle (Code)“ ein.
VBA-Code: Automatisches Versenden einer E-Mail, sobald ein Fälligkeitsdatum erfüllt ist
Public Sub SendMailDueDate()
'Updated by Extendoffice 20220804
Dim xRgDate As Range
Dim xRgSend As Range
Dim xRgText As Range
Dim xRgDone As Range
Dim xOutApp As Object
Dim xMailItem As Object
Dim xLastRow As Long
Dim vbCrLf As String
Dim xMailBody As String
Dim xRgDateVal As String
Dim xRgSendVal As String
Dim xMailSubject As String
Dim i As Long
On Error Resume Next
Set xRgDate = Range("E2:E7") 'Please reference the due date column range
If xRgDate Is Nothing Then Exit Sub
Set xRgSend = Range("C2:C7") 'Please reference the email addresses column range
If xRgSend Is Nothing Then Exit Sub
Set xRgText = Range("D2:D7") 'Please reference the remark column range (the remark used to notify project leaders of the expiration of the project)
If xRgText Is Nothing Then Exit Sub
xLastRow = xRgDate.Rows.Count
Set xRgDate = xRgDate(1)
Set xRgSend = xRgSend(1)
Set xRgText = xRgText(1)
Set xOutApp = CreateObject("Outlook.Application")
For i = 1 To xLastRow
xRgDateVal = ""
xRgDateVal = xRgDate.Offset(i - 1).Value
If xRgDateVal <> "" Then
If CDate(xRgDateVal) - Date <= 7 And CDate(xRgDateVal) - Date > 0 Then
xRgSendVal = xRgSend.Offset(i - 1).Value
xMailSubject = xRgText.Offset(i - 1).Value & " on " & xRgDateVal
vbCrLf = "
"
xMailBody = ""
xMailBody = xMailBody & "Dear " & xRgSendVal & vbCrLf
xMailBody = xMailBody & "Remark : " & xRgText.Offset(i - 1).Value & vbCrLf
xMailBody = xMailBody & ""
Set xMailItem = xOutApp.CreateItem(0)
With xMailItem
.Subject = xMailSubject
.To = xRgSendVal
.CC = "Email address"
.BCC = "Email address"
.HTMLBody = xMailBody
.Display
'.Send
End With
Set xMailItem = Nothing
End If
End If
Next
Set xOutApp = Nothing
End Sub Hinweise: Im Code
3. Drücken Sie die Taste „F5“, um den Code auszuführen. Wenn das Fälligkeitsdatum die Bedingungen erfüllt, wird die entsprechende E-Mail erstellt – in diesem Fall zwei E-Mails, wie im folgenden Screenshot dargestellt.

5. Ein praktisches Tool, mit dem Sie ganz einfach E-Mails direkt aus Excel versenden können
Wenn Sie neu im Umgang mit VBA sind, könnten die oben genannten Methoden für Sie eine Herausforderung darstellen. Daher empfehlen wir Ihnen die Funktion E-Mails versenden von „Kutools für Excel“. Mit dieser Funktion senden Sie E-Mails aus Excel ganz einfach – mit nur wenigen Klicks! Gehen Sie dazu wie folgt vor.
5,1 Erstellen Sie mühelos eine E-Mail-Liste, die die gewünschten E-Mail-Felder enthält
Bevor Sie die Funktion „E-Mails versenden“ nutzen, erstellen Sie eine E-Mail-Liste mit den erforderlichen E-Mail-Feldern – dabei unterstützt Sie die Funktion „Mailing-Liste erstellen“.
1. Klicken Sie auf „KUTOOLS PLUS“ > „Mailing-Liste erstellen“.

2. Konfigurieren Sie im geöffneten Fenster „Mailing-Liste erstellen“ die folgenden Einstellungen.

Dann wird eine Beispieltabelle „E-Mail-Liste“ erstellt, wie im folgenden Screenshot gezeigt.

3. Ersetzen Sie nun die ursprünglichen Daten in der Beispieltabelle durch Ihre eigenen Felddaten.

Sie haben nun eine E-Mail-Listen-Tabelle erstellt. Nutzen Sie jetzt die Funktion „E-Mails versenden“, um direkt aus Excel heraus E-Mails basierend auf Ihren erstellten Feldern zu versenden.
Kutools für Excel– Erweitern Sie Excel mit über 300 unverzichtbaren Tools, um Ihre Arbeit schneller und einfacher zu erledigen, und nutzen Sie KI-Funktionen für intelligentere Datenverarbeitung und höhere Produktivität.Jetzt herunterladen
5,2 Senden Sie ganz einfach E-Mails mit den Feldern, die Sie in Ihrer E-Mail-Liste erstellt haben.
Nachdem Sie die E-Mail-Liste erstellt haben ()klicken Sie hier, um mehr zu erfahren), die die Felder enthält, die Sie möglicherweise in Ihren E-Mails benötigen, können Sie nun direkt aus Excel E-Mails mit diesen Feldern versenden.
1. Markieren Sie die gesamte E-Mail-Liste, und klicken Sie auf „KUTOOLS PLUS“ > „E-Mails senden“.

2. Nehmen Sie im Dialogfeld „E-Mails senden“ die folgende Konfiguration vor.

3. Anschließend erscheint das Dialogfeld „Kutools für Excel“, das Ihnen anzeigt, wie viele E-Mails gesendet wurden. Klicken Sie auf „OK“, um es zu schließen.
Tipp: Rufen Sie den Ordner „Gesendete Elemente“ in Ihrem Outlook auf, um Ihre gesendeten E-Mails zu überprüfen.

5,3 E-Mails mit HTML-Textkörper (einschließlich Hyperlinks, Bildern usw.) einfach versenden
Mit der Funktion „E-Mails senden“ erstellen Sie ganz einfach eine HTML-E-Mail – inklusive Hyperlinks, Bilder sowie individueller Schriftgrößen und -farben.
Nachdem Sie eine E-Mail-Liste mit den erforderlichen E-Mail-Feldern erstellt haben, können Sie das Dialogfeld „E-Mails senden“ konfigurieren und den Textkörper mithilfe der Optionen in der Symbolleiste ansprechend gestalten.
Siehe folgender Screenshot:

5,4 Outlook-Standardsignatur beim Versenden von E-Mails einfach einfügen
Im obigen Abschnitt haben wir einen VBA-Code vorgestellt, mit dem Sie E-Mails mithilfe Ihrer Outlook-Standardsignatur versenden können. Dank der Funktion „E-Mails senden“ genügt es, eine Option zu aktivieren – und Ihre Outlook-Standardsignatur wird automatisch in alle aus Excel versendeten E-Mails eingefügt.
Nachdem Sie eine E-Mail-Liste mit den erforderlichen E-Mail-Feldern erstellt haben, klicken Sie beim Konfigurieren des Dialogfelds „E-Mails senden“ auf „Optionen“ > „Outlook-Signatureinstellungen verwenden“.
Hinweis: Stellen Sie sicher, dass die Option „Outlook-Signatureinstellungen verwenden“ aktiviert ist.

Wenn Empfänger die E-Mail erhalten, wird am Ende des Textkörpers automatisch die Outlook-Standardsignatur angezeigt.
5,5 E-Mails ganz einfach von einem bestimmten E-Mail-Konto aus versenden
Um beim Versenden von E-Mails aus Excel ein bestimmtes E-Mail-Konto statt des Standardkontos zu verwenden, unterstützt Sie ebenfalls die Funktion „E-Mails senden“.
Nachdem Sie eine E-Mail-Liste mit den erforderlichen E-Mail-Feldern erstellt haben, klicken Sie im Dialogfeld „E-Mails senden“ auf „Optionen“ > „Gesendet von“ und wählen das gewünschte E-Mail-Konto aus.
Hinweis: Nach der Auswahl des E-Mail-Kontos erscheint davor ein Häkchen.

Klicken Sie hier, um mehr über die Funktion „E-Mails senden“ zu erfahren.
Kutools für Excel– Erweitern Sie Excel mit über 300 unverzichtbaren Tools, um Ihre Arbeit schneller und einfacher zu erledigen, und nutzen Sie KI-Funktionen für intelligentere Datenverarbeitung und höhere Produktivität.Jetzt herunterladen
Zusammenfassend lässt sich sagen, dass das Versenden von E-Mails aus Excel in der täglichen Arbeit äußerst nützlich ist. Dieser Artikel beleuchtet umfassend alle relevanten Aspekte des E-Mail-Versands direkt aus Excel. Sollten Ihnen weitere Themen oder noch einfachere Lösungen bekannt sein, hinterlassen Sie gerne einen Kommentar – so erfahre ich davon!
Beste Office-Produktivitätstools
Verbessern Sie Ihre Excel-Kenntnisse mit Kutools für Excel und erleben Sie Effizienz wie nie zuvor.Kutools für Excel bietet über 300 erweiterte Funktionen zur Steigerung der Produktivität und Zeit sparen.Klicken Sie hier, um die Funktion zu erhalten, die Sie am dringendsten benötigen...
Office Tab bringt eine tabbasierte Oberfläche in Office und macht Ihre Arbeit viel einfacher
- Aktivieren Sie tabbasiertes Bearbeiten und Lesen in Word, Excel, PowerPoint, Publisher, Access, Visio und Project.
- Öffnen und erstellen Sie mehrere Dokumente in neuen Registerkarten desselben Fensters – statt jedes in einem separaten Fenster zu öffnen.
- Steigert Ihre Produktivität um 50 % und erspart Ihnen täglich Hunderte von Mausklicks!
Alle Kutools-Add-Ins – ein Installationsprogramm
Kutools for Office-Paket bündelt Add-Ins für Excel, Word, Outlook und PowerPoint sowie Office Tab Pro – ideal für Teams, die mit mehreren Office-Anwendungen arbeiten.
- Alles-in-einem-Paket— Add-Ins für Excel, Word, Outlook & PowerPoint sowie Office Tab Pro
- Ein Installationsprogramm, eine Lizenz— innerhalb weniger Minuten eingerichtet (MSI-fähig)
- Funktioniert besser zusammen— optimierte Produktivität über alle Office-Anwendungen hinweg
- 30-tägige Vollversion zum Testen— keine Registrierung, keine Kreditkarte erforderlich
- Bestes Preis-Leistungs-Verhältnis— sparen Sie im Vergleich zum Kauf einzelner Add-Ins