Zum Hauptinhalt springen

Excel-Tutorial – E-Mails aus Excel senden

Author: Siluvia Last Modified: 2025-05-29

Normalerweise verwenden wir E-Mail-Clients wie Outlook, Gmail usw., um E-Mails zu versenden. Aber viele Menschen speichern Daten in Excel-Arbeitsmappen und müssen während der Arbeit einige Daten an andere weiterleiten. Daher müssen sie E-Mails direkt aus der Excel-Arbeitsmappe senden, was die Zeit erspart, einen E-Mail-Client zu bedienen. Dieses Schritt-für-Schritt-Tutorial zeigt 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 konfigurieren und als Standard-E-Mail-Client einstellen.

Inhaltsverzeichnis: [Ausblenden]

(Klicken Sie auf eine beliebige Überschrift im Inhaltsverzeichnis unten oder rechts, um zum entsprechenden Kapitel zu navigieren.)

1. Die Grundlagen zum Senden von E-Mails aus Excel

Dieser Abschnitt stellt die Grundlagen des Sendens von E-Mails aus Excel vor.

1.1 E-Mails direkt aus Excel mit den integrierten Funktionen von Excel senden

Wenn Sie nur einfache E-Mails direkt aus Excel versenden möchten, die lediglich die Felder 'An', 'Betreff', 'Cc' und den Nachrichtentext umfassen, können Ihnen die integrierten Funktionen in Excel dabei helfen.


1.1.1 E-Mail aus Excel mithilfe einer Formel senden

Wie in der Tabelle unten gezeigt, können Sie unterschiedliche E-Mails basierend auf den angegebenen Feldern aus Excel versenden, indem Sie die Zellbezüge der angegebenen Felder verwenden, um verschiedene Hyperlink-Formeln zu erstellen. Nachdem Sie die E-Mail-Hyperlinks erstellt haben, können Sie auf den Hyperlink klicken, um die E-Mail automatisch zu senden.

Hinweis: Wenn es mehr als einen Empfänger in den Feldern 'An' oder 'Cc' gibt, bitte mit Semikolons trennen.

Dieser Abschnitt ist in vier Teile unterteilt, um Ihnen die Schritte zu zeigen, wie Sie E-Mail-Adresse, Cc-Empfänger, Betreffzeile und Textkörper separat zur Hyperlink-Formel hinzufügen. Bitte folgen Sie den nachstehenden Anweisungen.

Die Syntax und Argumente der Funktion „HYPERLINK“ sind wie folgt.

Syntax

HYPERLINK(Linkposition, [freundlicher_Name])

Argumente

"Link_location" (erforderlich): Der Pfad und der Dateiname des zu öffnenden Dokuments;
Tipps: In diesem Tutorial sollten alle Felder, die wir für eine E-Mail benötigen, wie die E-Mail-Adresse des Empfängers, der Cc-Empfänger, die Betreffzeile und der Textkörper, im ersten Argument "link_location" platziert werden.
"Friendly_name" (optional): Der Sprungwert, der in der Zelle angezeigt wird.

1.1.1.1 E-Mail-Adresse zur Hyperlink-Formel hinzufügen

Hier verwenden wir "mailto:" als Teil der Formel, um einen E-Mail-Empfänger hinzuzufügen. In diesem Beispiel befindet sich die E-Mail-Adresse des ersten Empfängers in Zelle B2, daher müssen wir "mailto:" hinzufügen und es auf Zelle B2 beziehen.

"mailto:"&B2

1. Wählen Sie eine Zelle aus, um den Hyperlink anzuzeigen. In diesem Fall wähle ich die Zelle F2.

2. Geben Sie dann die folgende Formel ein.

=HYPERLINK("mailto:"&B2)

Hinweis: Wenn Sie die Eingabetaste drücken, wird ein Hyperlink wie im Screenshot unten erstellt. Wenn Sie auf den Link klicken, wird eine Outlook-E-Mail erstellt und die E-Mail-Adresse des Empfängers wird automatisch in das Feld 'An' eingetragen.

Die E-Mail-Adresse des Empfängers wurde nun zur Hyperlink-Formel hinzugefügt. Bitte fahren Sie mit den folgenden Schritten fort, um die Betreffzeile, Cc-Empfänger und den Textkörper nach Bedarf hinzuzufügen.


1.1.1.2 Cc-Empfänger zum Hyperlink-Formel hinzufügen

Um den Cc-Empfänger bzw. die Cc-Empfänger zur Hyperlink-Funktion hinzuzufügen, fügen Sie bitte "?cc=" als Teil der Formel wie folgt hinzu.

"?cc=" & C2
wobei C2 die E-Mail-Adresse des CC-Empfängers enthält.

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, fügen Sie bitte "&subject=" als Teil der Formel wie folgt hinzu.

"&Betreff="& D2
wobei D2 den E-Mail-Betreff enthält.

Die Formel in Zelle F2 sollte nun wie folgt aussehen:

=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2)


1.1.1.4 Fügen Sie Text mit Zeilenumbrüchen zur Hyperlink-Formel hinzu

Der letzte Schritt besteht darin, den Textkörper zur Hyperlink-Formel hinzuzufügen. Wie Sie im Beispiel sehen können, werden zwei Textzeilen in E2 durch einen Zeilenumbruch getrennt, und Sie möchten den Zeilenumbruch im E-Mail-Text beibehalten. Erkennt Outlook den Zeilenumbruch in diesem Fall? Lassen Sie uns dies überprüfen.

Um den Textkörper zur Hyperlink-Formel hinzuzufügen, müssen Sie "&body=" als Teil der Formel wie folgt hinzufügen.

"&body="& E2
wobei E2 den Textkörper der E-Mail enthält.

Die Formel in Zelle F2 wird nun wie folgt angezeigt:

=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2)

Hinweis: Wenn Sie die Eingabetaste drücken und auf den Link klicken, können Sie in der neuen E-Mail sehen, dass die Inhalte im E-Mail-Textkörper in derselben Zeile angezeigt werden.

Um den E-Mail-Text in separaten Zeilen anzuzeigen, müssen Sie den Zelleninhalt ändern, indem Sie den Wagenrücklauf-Zeichen-Code "%0A" an der Stelle im Text hinzufügen, an der Sie einen Zeilenumbruch einfügen möchten. Siehe Screenshot:


1.1.1.5 Geben Sie den Text an, der für den Hyperlink angezeigt werden soll

In den obigen Schritten haben wir das Argument Link_location mit E-Mail-Feldern abgeschlossen. In diesem Abschnitt werden wir das nächste Argument [friendly_name] fertigstellen.

In diesem Fall möchte ich, dass die Hyperlink-Zelle den Text als „E-Mail an xx“ anzeigt, wobei xx der Name des Empfängers in A2 ist. Daher sollte die Formel in F2 geändert werden zu:

=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2, "Email to "&A2)

Drücken Sie die Eingabetaste, um das Ergebnis zu erhalten.

Wählen Sie diese Formelzelle aus und ziehen Sie ihren "AutoFill-Handle" nach unten, um weitere E-Mail-Hyperlinks zu erstellen. Siehe Screenshot:


1.1.2 E-Mail aus Excel mit der Hyperlink-Funktion senden

Abgesehen von der Verwendung der oben genannten Hyperlink-Formel können Sie manuell einen E-Mail-Hyperlink mit der Funktion „Hyperlink einfügen“ in Excel erstellen. Dieser Abschnitt zeigt Ihnen die Schritte.

1. Klicken Sie mit der rechten Maustaste auf eine E-Mail, in die Sie einen Hyperlink einfügen möchten, und wählen Sie "Verknüpfung" aus dem Kontextmenü.

2. Im aufgehenden Dialogfeld „Hyperlink einfügen“ müssen Sie wie folgt konfigurieren.

2.1) Wählen Sie „E-Mail-Adresse“ im linken Bereich aus.
2.2) Geben Sie im Textfeld „Anzuzeigender Text“ den Text ein, den Sie in der Zelle anzeigen möchten.
Tipp: In diesem Dialogfeld können Sie keine Zellbezüge verwenden, daher sollten Sie die E-Mail-Felder wie folgt manuell eingeben.
2.3) Geben Sie im Textfeld „E-Mail-Adresse“ die folgenden E-Mail-Adressen ein.
mailto:E-Mail-Adresse
Bitte ersetzen Sie den Text „E-Mail-Adresse“ durch Ihre tatsächliche E-Mail-Adresse. Wenn Sie mehrere E-Mail-Adressen haben, trennen Sie diese durch ein Semikolon.
2.4) Im Textfeld „Betreff“ können Sie den E-Mail-Betreff und den E-Mail-Text direkt hier angeben. Bitte konfigurieren Sie wie folgt:
Betreff der E-Mail&body=Text der E-Mail
In diesem Fall gebe ich "Monatlicher Verkauf&body=Hi,%0AE-Mail erhalten" ein.
wobei das Thema der monatliche Verkauf ist;
und
Der E-Mail-Text lautet:
Hallo,
E-Mail erhalten. ("%0A" ist der Zeilenumbruch-Zeichenkode, der von Outlook erkannt werden kann)
2.5) Klicken Sie auf die Schaltfläche „OK“, um den Hyperlink zu speichern. Siehe Screenshot:

Wenn Sie auf den Hyperlink klicken, wird eine Outlook-E-Mail mit den angegebenen Feldern 'An', 'Betreff' und 'Text' erstellt, wie im folgenden Screenshot dargestellt.

Hinweise:

1) Mit dieser Methode mussten Sie die E-Mail-Hyperlinks jeweils manuell erstellen.
2) Mit dieser Methode können Sie das CC-Feld nicht zu E-Mails hinzufügen. Wenn Sie also das CC-Feld benötigen, fügen Sie es bitte im neu geöffneten E-Mail-Fenster hinzu.

1.2 E-Mail an mehrere Empfänger in Zellen mit VBA-Skript senden

Im obigen Beispiel sehen Sie mehrere E-Mail-Adressen, die in einer Zelle angezeigt werden, getrennt durch Semikolons. Wenn Sie eine Liste von E-Mail-Adressen wie im Screenshot unten haben und eine E-Mail oder separate E-Mails an alle Empfänger senden möchten, kann Ihnen der folgende VBA-Code helfen.


1.2.1 E-Mail an mehrere Empfänger in Zellen mit VBA-Skript senden

1. Öffnen Sie das Arbeitsblatt, das alle E-Mail-Adressen enthält, an die Sie die E-Mail senden möchten. Drücken Sie die Tasten "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 dann den folgenden Code in das Fenster „Modul (Code)“ ein.

VBA-Code: E-Mail an eine Liste von E-Mail-Adressen 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 Taste „F5“, um den Code auszuführen, und ein Dialogfeld „Kutools for Excel“ wird angezeigt. Wählen Sie die Liste der E-Mail-Adressen aus und klicken Sie auf „OK“.

A screenshot of the 'Kutools for Excel' dialog box asking for the email addresses list

Hinweise:

1) Wenn Sie nicht möchten, dass das obige Dialogfeld angezeigt wird und den Bereich der E-Mail-Adressen direkt im Code festlegen möchten, ersetzen Sie bitte diese Zeile:
Set xRg = Application.InputBox("Bitte wählen Sie die Adressliste aus:", "Kutools für Excel", xTxt, , , , , 8)
mit
Set xRg = Bereich("A2:A7")
2) Sie können im Folgenden Ihre eigene E-Mail-Betreffzeile und den Textkörper angeben:
.Betreff = "Test"
.Body = "Dear " _
        & vbNewLine & vbNewLine & _
        "This is a test email " & _
        "sending in Excel"
3) Um die E-Mail direkt zu senden, ohne das folgende Fenster für eine neue Nachricht zu öffnen, müssen Sie diese Zeile ersetzen:
.Anzeige
mit
.Senden

Nachdem der Code ausgeführt wurde, werden alle E-Mail-Adressen im ausgewählten Bereich im 'An'-Feld des Nachrichtenfensters angezeigt. Siehe Screenshot:

A screenshot of the email message window with all email addresses filled in the To field


1.2.2 E-Mails separat an jeden Empfänger in Zellen mit VBA-Skript senden

Der obige Code fügt alle E-Mail-Adressen im ausgewählten Bereich in das 'An'-Feld des Nachrichtenfensters ein. Wenn Sie E-Mails an jede in den Zellen aufgelistete E-Mail-Adresse separat senden möchten, ohne dass sie die E-Mail-Adressen voneinander sehen, können Sie das folgende VBA-Skript ausprobieren.

1. Öffnen Sie das Arbeitsblatt, das alle E-Mail-Adressen enthält, an die Sie die E-Mails senden möchten. Drücken Sie die Tasten "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 dann den folgenden Code in das Modul (Code) Fenster ein.

VBA-Code: E-Mails an jede in den Zellen aufgelistete E-Mail-Adresse separat 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 dann auf „Extras“ > „Verweise“. Aktivieren Sie im Dialogfeld „Verweise – VBAProject“ das Kontrollkästchen „Microsoft Outlook 16.0 Object Library“ und klicken Sie anschließend auf die Schaltfläche „OK“, um die Änderungen zu speichern.

A screenshot of the 'References – VBAProject' dialog box in Excel with the Microsoft Outlook 16.0 Object Library option selected

4. Drücken Sie die Taste „F5“, um den Code auszuführen, und ein Dialogfeld „Kutools for Excel“ wird angezeigt. Wählen Sie die Liste der E-Mail-Adressen aus und klicken Sie auf „OK“.

A screenshot of the 'Kutools for Excel' dialog box asking for the email address list selection

Hinweise:

1) Wenn Sie nicht möchten, dass das obige Dialogfeld angezeigt wird und den Bereich der E-Mail-Adressen direkt im Code festlegen möchten, ersetzen Sie bitte diese Zeile:
Set xRg = Application.InputBox("Bitte wählen Sie die Adressliste aus:", "Kutools für Excel", xTxt, , , , , 8)
mit
Set xRg = Bereich("A2:A7")
2) Sie können im Folgenden Ihre eigene E-Mail-Betreffzeile und den Textkörper angeben:
.Subject = "Test"
.Body = "Dear " _
        & vbNewLine & vbNewLine & _
        "This is a test email " & _
        "sending in Excel"
3) Um die E-Mail direkt zu senden, ohne die folgenden Nachrichtenfenster zu öffnen, müssen Sie diese Zeile ersetzen:
.Anzeige
mit
.Senden

In diesem Beispiel befinden sich sechs E-Mail-Adressen im ausgewählten Bereich, daher werden automatisch sechs Outlook-Nachrichtenfenster erstellt, wobei jede E-Mail-Adresse separat im 'An'-Feld aufgelistet wird, wie im Screenshot unten zu sehen.

A screenshot of multiple Outlook message windows with separate email addresses in the To field

5. Klicken Sie abschließend auf die Schaltfläche "Senden", um die E-Mails einzeln zu versenden.


2. Anhänge oder Outlook-Signatur in E-Mails einfügen, die von Excel aus gesendet werden (mit VBA-Skripten)

Dieser Abschnitt zeigt Ihnen, wie Sie Anhänge oder die Outlook-Standardunterschrift in E-Mails einfügen, die von Excel aus gesendet werden.

2.1 Anhänge in E-Mails einfügen, die von Excel gesendet werden

Hier beschreiben wir die verschiedenen Fälle des Einfügens von Anhängen, und Sie können die Methode entsprechend Ihren Bedürfnissen auswählen. In diesem Abschnitt können Sie lernen (klicken Sie auf einen der folgenden Links, um zur entsprechenden Methode zu gelangen):


2.1.1 Eine bestimmte Datei als Anhang per E-Mail senden

Sie können den folgenden VBA-Code anwenden, um eine oder mehrere Dateien in einem Ordner als Anhänge per E-Mail von Excel aus 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“. Fügen Sie dann den folgenden VBA-Code in das Modul (Code)-Fenster ein.

VBA-Code: E-Mail-Dateien in einem Ordner als Anhänge aus Excel senden

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:

1) Ersetzen Sie in der Zeile ".To = xxx@aaa.com" bitte "xxx@aaa.com" durch die E-Mail-Adresse Ihres Empfängers.
2) Ändern Sie den E-Mail-Betreff und den E-Mail-Textkörper separat in der Zeile ".Subject = "test"" und ".HTMLBody = "test"";
3) Sie können bei Bedarf Cc- und Bcc-Empfänger hinzufügen. Fügen Sie einfach die folgenden zwei Zeilen unter der Zeile „To = xxx@aaa.com“ ein.
.CC = "E-Mail-Adresse"
.BCC = "E-Mail-Adresse"

3. Klicken Sie dann auf "Extras" > "Verweise." Aktivieren Sie im Dialogfeld "Verweise – VBAProject" das Kontrollkästchen für "Microsoft Outlook 16.0 Object Library" und klicken Sie anschließend auf die Schaltfläche "OK", um die Änderungen zu speichern.

A screenshot of the 'References – VBAProject' dialog box in Excel with the Microsoft Outlook 16.0 Object Library option selected

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

A screenshot of the 'Browse' window for selecting files to attach to an email in Exce

Dann öffnet sich ein Nachrichtenfenster. Sie können sehen, dass die ausgewählten Dateien als Anhänge im Feld 'Angehängte Dateien' angezeigt werden.

A screenshot of the Outlook message window with selected files displayed as attachments


2.1.2 E-Mailen des aktuellen Arbeitsblatts als Anhang

Wenn Sie das aktuelle Arbeitsblatt als Anhang per E-Mail direkt aus Excel versenden möchten, können Sie das VBA-Skript in diesem Abschnitt verwenden.

1. Drücken Sie die Tasten „Alt“ + „F11“.

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

VBA-Code: Aktuelles Arbeitsblatt als Anhang per E-Mail senden

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:

1) In der Zeile „To = xxx@aaa.com“ ersetzen Sie bitte „xxx@aaa.com“ durch die tatsächliche E-Mail-Adresse des Empfängers. Wenn Sie mehr als eine E-Mail-Adresse benötigen, trennen Sie diese bitte mit Semikolons.
2) Ändern Sie den E-Mail-Betreff und den E-Mail-Text separat in der Zeile ".Subject = "kte features"" und ".Body = " Bitte überprüfen und lesen Sie dieses Dokument."";
3) In den folgenden zwei Zeilen:
.CC = "E-Mail-Adresse"
.BCC = "E-Mail-Adresse"
Wenn Sie die CC- und BCC-Empfänger hinzufügen möchten, ersetzen Sie den Text „"E-Mail-Adresse"“ in den Zeilen durch die benötigten E-Mail-Adressen.
Wenn Sie die CC- und BCC-Empfänger nicht benötigen, fügen Sie einfach ein Apostroph '  vor jede Zeile.

3. Drücken Sie die Taste „F5“, um den Code auszuführen. Dann wird das aktuelle Arbeitsblatt als Excel-Arbeitsmappe gespeichert und automatisch als Anhang in einem Nachrichtenfenster eingefügt. Siehe Screenshot:

A screenshot of the Outlook message window with the current worksheet saved and attached as an Excel workbook

Hinweis: Das angehängte Arbeitsblatt, das nur das aktuelle Arbeitsblatt enthält, hat denselben Namen wie das ursprüngliche Arbeitsblatt. Außerdem wird die Uhrzeit, zu der Sie den Code ausführen, dem Namen des Arbeitsblatts hinzugefügt.


2.1.3 E-Mail mit der aktuellen Arbeitsmappe als Anhang

Nachdem Sie den VBA-Code zum Versenden des aktuellen Arbeitsblatts als Anhang per E-Mail aus Excel kennengelernt haben, stellen wir Ihnen hier ein weiteres VBA-Skript zur Verfügung, mit dem Sie die gesamte Arbeitsmappe als Anhang per E-Mail versenden können. Bitte gehen Sie 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“. Fügen Sie dann den folgenden VBA-Code in das Modulfenster (Code) ein.

VBA-Code: E-Mail mit der aktuellen Arbeitsmappe als Anhang aus Excel senden

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:

1) Ersetzen Sie in der Zeile ".To = xxx@aaa.com" bitte "xxx@aaa.com" durch die tatsächliche E-Mail-Adresse des Empfängers. Wenn Sie mehrere E-Mail-Adressen benötigen, trennen Sie diese bitte durch Semikolons.
2) Ändern Sie den E-Mail-Betreff und den E-Mail-Text separat in der Zeile ".Subject = "kte features"" und ".Body = " Bitte überprüfen und lesen Sie dieses Dokument."";
3) In den folgenden zwei Zeilen:
.CC = "E-Mail-Adresse"
.BCC = "E-Mail-Adresse"
Wenn Sie die CC- und BCC-Empfänger hinzufügen möchten, ersetzen Sie den Text "E-Mail-Adresse" in den Zeilen durch die benötigten E-Mail-Adressen.
Wenn Sie die CC- und BCC-Empfänger nicht benötigen, fügen Sie einfach ein Apostroph ' vor jede Zeile.

3. Drücken Sie die Taste „F5“, um den Code auszuführen, dann wird die aktuelle Arbeitsmappe automatisch als Anhang in das Nachrichtenfenster eingefügt. Siehe Screenshot:

A screenshot of the Outlook message window with the current workbook attached automatically


2.1.4 Versenden des gesamten Arbeitsmappen als PDF-Anhang per E-Mail

Die meisten Menschen neigen dazu, eine Excel-Arbeitsmappe als PDF-Datei zu speichern und sie dann als Anhang an andere zu senden. In diesem Abschnitt zeige ich Ihnen eine Möglichkeit, E-Mails direkt aus Excel zu versenden, wobei die aktuell geöffnete Arbeitsmappe als PDF-Anhang verwendet wird, ohne die Arbeitsmappe manuell als PDF-Datei 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“. Fügen Sie dann den folgenden VBA-Code in das Modulfenster (Code) ein.

VBA-Code: Versenden der gesamten Arbeitsmappe als PDF-Anhang per E-Mail

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:

1) Ersetzen Sie in der Zeile ".To = xxx@aaa.com" bitte "xxx@aaa.com" durch die tatsächliche E-Mail-Adresse des Empfängers. Wenn Sie mehr als eine E-Mail-Adresse benötigen, trennen Sie diese bitte durch Semikolons.
2) Ändern Sie den E-Mail-Betreff und den E-Mail-Textkörper separat in der Zeile .Subject = "test" und .Body = "test";
3) In den folgenden zwei Zeilen:
.CC = "E-Mail-Adresse"
.BCC = "E-Mail-Adresse"
Wenn Sie die CC- und BCC-Empfänger hinzufügen möchten, ersetzen Sie den Text "E-Mail-Adresse" in den Zeilen durch die benötigten E-Mail-Adressen.
Wenn Sie die CC- und BCC-Empfänger nicht benötigen, fügen Sie einfach ein Apostroph ' vor jede Zeile ein.
4) Der Name der PDF-Datei wird derselbe sein wie der Name der ursprünglichen Arbeitsmappe. Außerdem wird die Uhrzeit, zu der Sie den Code ausführen, ebenfalls zum Namen der Arbeitsmappe hinzugefügt. Wenn Sie den Zeitstempel nicht zum Dateinamen hinzufügen möchten, entfernen Sie bitte & Format(Now, "dd-mmm-yy h-mm-ss") aus der folgenden Zeile.
Dateiname = Links(Wb.Name, (InStrRev(Wb.Name, ".", -1, vbTextCompare) - 1)) & Format(Now, "dd-mmm-yy h-mm-ss") & ".pdf"

3. Drücken Sie die Taste "F5", um den Code auszuführen. Dann wird die aktuelle Arbeitsmappe automatisch als PDF-Dateianhang in einem neuen Nachrichtenfenster eingefügt. Siehe Screenshot:

A screenshot of the Outlook message window with the current workbook attached as a PDF file


2.1.5 E-Mail das aktuelle Arbeitsblatt als PDF-Anhang

Angenommen, es gibt eine Arbeitsmappe mit dem Namen „Monatlicher Umsatz“, und Sie haben einen Umsatzbericht in einem Arbeitsblatt namens „Umsatzbericht“ fertiggestellt. Nun möchten Sie dieses Arbeitsblatt als PDF-Datei an Ihre Kollegen senden. Der folgende VBA-Code kann Ihnen dabei helfen.

1. Drücken Sie die Tasten „Alt“ + „F11“.

2. Klicken Sie im geöffneten Fenster „Microsoft Visual Basic for Applications“ auf „Einfügen“ > „Modul“. Fügen Sie dann den folgenden VBA-Code in das Modulfenster (Code) ein.

VBA-Code: Aktuelles Arbeitsblatt als PDF-Anhang per E-Mail senden

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:

1) Ersetzen Sie in der Zeile ".To = xxx@aaa.com" bitte "xxx@aaa.com" durch die tatsächliche E-Mail-Adresse des Empfängers. Wenn Sie mehr als eine E-Mail-Adresse benötigen, trennen Sie diese bitte durch Semikolons.
2) Ändern Sie den E-Mail-Betreff und den E-Mail-Textkörper separat in der Zeile .Subject = "test" und .Body = "test";
3) In den folgenden zwei Zeilen:
.CC = "E-Mail-Adresse"
.BCC = "E-Mail-Adresse"
Wenn Sie die CC- und BCC-Empfänger hinzufügen möchten, ersetzen Sie den Text "E-Mail-Adresse" in den Zeilen durch die benötigten E-Mail-Adressen.
Wenn Sie die CC- und BCC-Empfänger nicht benötigen, fügen Sie einfach ein Apostroph ' vor jede Zeile ein.
4) Der Name der PDF-Datei wird wie folgt lauten: Name der ursprünglichen Arbeitsmappe_Name des ursprünglichen Arbeitsblatts. In diesem Fall wird der Name der PDF-Datei „Monatlicher Umsatz_Umsatzbericht“ sein.

3. Drücken Sie die Taste „F5“, um den Code auszuführen. Dann wird das aktuelle Arbeitsblatt automatisch als PDF-Dateianhang in einem neuen Nachrichtenfenster eingefügt. Siehe Screenshot:

A screenshot of the Outlook message window with the current worksheet attached as a PDF file


2.2 Outlook-Signatur in E-Mails einfügen, die von Excel gesendet werden

Nehmen Sie den obigen Fall als Beispiel: Sie wenden den oben genannten VBA-Code an, um das aktuelle Arbeitsblatt als PDF-Dateianhang von Excel zu versenden, aber die Outlook-Signatur kann nicht zum Nachrichtenfenster hinzugefügt werden. Um die Standard-Outlook-Signatur in der E-Mail, die von Excel gesendet wird, beizubehalten, hilft die folgende Methode.

Zwei VBA-Codes sind unten aufgeführt.

VBA-Code 1: Der Code hilft, die Outlook-Signatur beizubehalten.

VBA-Code 2: Der Code hilft dabei, das aktuelle Arbeitsblatt als PDF-Anhang per E-Mail zu versenden.

VBA-Code 1: Outlook-Signatur beibehalten

.HTMLBody = "Email body" & "
" & .HTMLBody

VBA-Code 2: Aktuelles Arbeitsblatt als PDF-Anhang per E-Mail senden

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 müssen Sie die Tasten „Alt“ + „F11“ drücken, um das Fenster „Microsoft Visual Basic for Applications“ zu öffnen.

2. Klicken Sie im Fenster „Microsoft Visual Basic for Applications“ auf „Einfügen“ > „Modul“. Fügen Sie dann den obigen VBA-Code 2 in das Modul (Code)-Fenster ein.

3. Um die Outlook-Standardunterschrift in der E-Mail zu behalten, die von Excel gesendet wird, müssen Sie den VBA-Code 2 wie folgt ändern:

1) Ersetzen Sie die ".Body"-Zeile durch "VBA-Code 1";
2) Verschieben Sie die Zeile ".Display" unter die Zeile "With OutlookMail (oder With xMailOut in anderen Codes)". Siehe Screenshot:

A screenshot showing the modified VBA code with the .Body line replaced and .Display placed under With OutlookMail

Hier ist der vollständige Code nach der Änderung.

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 wird ein neues Nachrichtenfenster mit dem aktuellen Arbeitsblatt als PDF-Datei angehängt geöffnet, und die Outlook-Standardsignatur wird automatisch am Ende des E-Mail-Textes eingefügt.

A screenshot of an email in Outlook with the default signature automatically inserted at the end of the email body


3. E-Mails automatisch aus Excel senden, wenn eine Bedingung erfüllt ist (mit VBA-Skripten)

In den obigen Beispielen müssen Sie den Code manuell ausführen, um den E-Mail-Versand zu ermöglichen. Wenn Sie den Code jedoch automatisch auslösen möchten, sobald eine bestimmte Bedingung erfüllt ist – wie zum Beispiel, wenn eine Zelle einen bestimmten Wert erreicht, sich der Wert einer Zelle ändert oder ein bestimmtes Datum erreicht ist – wird die E-Mail automatisch versendet. Dieser Abschnitt listet die Bedingungen auf, nach denen Excel-Benutzer oft in Google suchen, um Ihnen zu helfen, E-Mails automatisch aus Excel zu senden, sobald eine bestimmte Bedingung erfüllt ist.

3.1 Automatisches Senden einer E-Mail, wenn eine Zelle einen bestimmten Wert erreicht

Wie im Screenshot unten gezeigt, nehmen wir an, Sie haben eine Verkaufstabelle, in der die Zelle D6 den Gesamtumsatz enthält. Sie möchten basierend auf dem Gesamtumsatz automatisch eine E-Mail an Ihren Chef senden. Zum Beispiel soll eine E-Mail automatisch erstellt oder gesendet werden, wenn der Gesamtumsatz 10000 überschreitet; wenn der Gesamtumsatz jedoch gleich oder weniger als 10000 ist, soll keine Aktion durchgeführt werden.

1. Im Arbeitsblatt, das die Verkaufstabelle enthält, mit der rechten Maustaste auf die Registerkarte des Blatts klicken und im Kontextmenü auf "Code anzeigen" klicken.

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

VBA-Code: Automatisches Senden 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:

1) „D6“ ist die Zelle, deren Wert Sie als Grundlage für das Senden einer E-Mail verwenden werden.
2) "> 10000" ist die Bedingung, was bedeutet, dass eine E-Mail gesendet wird, wenn der Wert in D6 größer als 10000 ist.
3) „Range(“D6”)“ in der folgenden Zeile bedeutet, dass der E-Mail-Text den Wert in D6 referenziert.
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")
4) In der Zeile ".To = xxx@aaa.com" ersetzen Sie bitte "xxx@aaa.com" durch die tatsächliche E-Mail-Adresse des Empfängers. Wenn Sie mehr als eine E-Mail-Adresse benötigen, trennen Sie diese bitte durch Semikolons.
5) Ändern Sie den E-Mail-Betreff in der Zeile .Subject = "test".
6) In den folgenden zwei Zeilen:
.CC = "E-Mail-Adresse"
.BCC = "E-Mail-Adresse"
Wenn Sie die CC- und BCC-Empfänger hinzufügen möchten, ersetzen Sie den Text "E-Mail-Adresse" in den Zeilen durch die benötigten E-Mail-Adressen.
Wenn Sie die CC- und BCC-Empfänger nicht benötigen, fügen Sie einfach ein Apostroph ' vor jede Zeile.

Ab sofort wird eine E-Mail erstellt, wenn der Wert in Zelle D6 10000 überschreitet, wie im Screenshot unten dargestellt.

A screenshot of an email created in Outlook when the value in cell D6 exceeds 10000 in Excel


3.2 Automatisches Senden einer E-Mail, wenn sich ein Zellenwert ändert

Wie im folgenden Screenshot gezeigt, nehmen wir an, dass Sie eine Arbeitsmappe erhalten, die monatliche Umsätze in verschiedenen Arbeitsblättern und die Umsatzsumme in einem Arbeitsblatt enthält. Sie müssen die Umsatzsumme überprüfen und, falls die Umsatzsumme geändert wurde, die Arbeitsmappe an den Absender zurücksenden und den Absender darüber informieren, dass die Zelle geändert wurde.

1. Im Arbeitsblatt, das die Verkaufstabelle enthält, mit der rechten Maustaste auf das Tab des Blatts klicken und im Kontextmenü auf "Code anzeigen" klicken.

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

VBA-Code: Automatisches Senden einer E-Mail, wenn sich ein bestimmter Zellwert ä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,

1) „B14“ im Code bedeutet, dass eine E-Mail gesendet wird, wenn sich der Wert der Zelle B14 ändert.
2) In der Zeile ".To = xxx@aaa.com" ersetzen Sie bitte "xxx@aaa.com" durch die tatsächliche E-Mail-Adresse des Empfängers. Wenn Sie mehr als eine E-Mail-Adresse benötigen, trennen Sie diese bitte durch Semikolons.
3) Ändern Sie den E-Mail-Betreff in der Zeile .Subject = "Worksheet modified".
4) In den folgenden zwei Zeilen:
.CC = "E-Mail-Adresse"
.BCC = "E-Mail-Adresse"
Wenn Sie die CC- und BCC-Empfänger hinzufügen möchten, ersetzen Sie den Text "E-Mail-Adresse" in den Zeilen durch die benötigten E-Mail-Adressen.
Wenn Sie die CC- und BCC-Empfänger nicht benötigen, fügen Sie einfach ein Apostroph ' vor jede Zeile.

Ab sofort wird jedes Mal, wenn sich der Wert in Zelle B14 ändert, automatisch eine Outlook-Nachricht erstellt, wie im Screenshot unten dargestellt.

A screenshot of an email created in Outlook when the value in cell B14 changes


3.3 Automatisches Senden einer E-Mail beim Speichern einer Arbeitsmappe

Wenn Sie eine Arbeitsmappe haben, die nach der Bearbeitung mit anderen geteilt werden muss, müssen Sie diese normalerweise speichern, den E-Mail-Client starten, eine neue E-Mail mit dieser Arbeitsmappe als Anhang erstellen, die entsprechenden Felder ausfüllen und dann die E-Mail senden. Dieser Abschnitt zeigt Ihnen eine Methode, mit der jedes Mal, wenn Sie die Arbeitsmappe speichern, automatisch eine E-Mail erstellt wird. Bitte gehen Sie wie folgt vor.

1. Drücken Sie die Tasten „Alt“ + „F11“, um das Fenster „Microsoft Visual Basic for Applications“ zu öffnen.

2. In diesem Fenster doppelklicken Sie auf "ThisWorkbook" im Bereich "Projekt", und fügen Sie dann den folgenden VBA-Code in das Fenster "ThisWorkbook (Code)" ein.

VBA-Code: Automatisches Senden 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

Hinweis: Im Code,

1) Ersetzen Sie in der Zeile ".To = xxx@aaa.com" bitte "xxx@aaa.com" durch die tatsächliche E-Mail-Adresse des Empfängers. Wenn Sie mehr als eine E-Mail-Adresse benötigen, trennen Sie diese bitte durch Semikolons.
2) Ändern Sie den E-Mail-Betreff und den Textkörper separat in den Zeilen ".Subject = "Die Arbeitsmappe wurde aktualisiert"" und ".Body = "Hallo," & Chr(13) & Chr(13) & "Die Datei ist jetzt aktualisiert."".
3) In den folgenden zwei Zeilen:
.CC = "E-Mail-Adresse"
.BCC = "E-Mail-Adresse"
Wenn Sie die CC- und BCC-Empfänger hinzufügen möchten, ersetzen Sie den Text „E-Mail-Adresse“ in den Zeilen durch die benötigten E-Mail-Adressen.
Wenn Sie die CC- und BCC-Empfänger nicht benötigen, fügen Sie einfach ein Apostroph ' vor jede Zeile ein.

3. Ab sofort wird beim Speichern der Arbeitsmappe durch Drücken der Tasten "Strg" + "S" oder durch Klicken auf die Schaltfläche "Speichern" automatisch eine Outlook-E-Mail erstellt. Sie können sehen, dass die aktuelle Arbeitsmappe als Anhang angehängt ist und die Felder mit dem angegebenen Inhalt ausgefüllt sind. Siehe Screenshot:

A screenshot showing an Outlook email with the current workbook attached, ready to be sent automatically

Tipp: Wenn Sie diese Arbeitsmappe häufig verwenden, empfehlen wir Ihnen, die Arbeitsmappe als "Excel-Makrofähige Arbeitsmappe" zu speichern, um das VBA-Skript für die zukünftige Verwendung zu sichern. Die Schritte sind wie folgt.

1) Klicken Sie auf "Datei" > "Speichern unter" und wählen Sie dann einen Ordner aus, um die Datei zu speichern.
2) Geben Sie im Dialogfeld „Speichern unter“ den Dateinamen im Textfeld „Dateiname“ wie gewünscht ein, wählen Sie „Excel-Arbeitsmappe mit Makros“ in der Dropdown-Liste „Speichern im Format“ aus und klicken Sie abschließend auf die Schaltfläche „Speichern“. Siehe Screenshot:

A screenshot of the 'Save As' dialog in Excel showing the option to save the workbook as an Excel Macro-Enabled Workbook


3.4 E-Mail automatisch zu einer bestimmten Uhrzeit senden

Angenommen, Sie müssen jeden Freitagmorgen um 9 Uhr eine E-Mail mit einer Arbeitsmappe für die Aufgabenverteilung an jemanden senden und möchten dies automatisch in Excel erledigen, ohne den E-Mail-Client manuell bedienen zu müssen. In diesem Abschnitt zeigen wir Ihnen die Methode, um dies zu erreichen.

1. Drücken Sie die Tasten „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“. Fügen Sie dann den folgenden VBA-Code in das Modulfenster ein.

VBA-Code1: Aktuelle Arbeitsmappe als Anhang per E-Mail aus Excel senden

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. In diesem Fenster doppelklicken Sie auf "ThisWorkbook" im Bereich "Projekt", und fügen Sie dann den folgenden VBA-Code in das Fenster "ThisWorkbook (Code)" ein.

A screenshot showing the VBA code editor with the 'Workbook_Open' event and 'Application.OnTime' function to schedule email sending

VBA-Code 2: E-Mail automatisch zu einer bestimmten Uhrzeit senden

Private Sub Workbook_Open()
    Application.OnTime TimeValue("09:00:00"), "Timer"
End Sub

Hinweise:

1) Im VBA-Code 1 bedeutet „Freitag“ in der folgenden Zeile, dass die E-Mail automatisch jeden Freitag gesendet wird.
Wenn Wochentag(Datum) = vbFreitag Dann
2) Im VBA-Code 1 und VBA-Code 2 bedeutet die Zeit "09:00:00", dass die E-Mail um 9 Uhr morgens an einem bestimmten Tag versendet wird.
Sie können den Tag und die Uhrzeit nach Bedarf ändern.
3) Wenn der Code ausgeführt wird, wird eine E-Mail erstellt. Wenn Sie das Nachrichtenfenster nicht anzeigen lassen und die E-Mail direkt senden möchten, entfernen Sie bitte die Zeile ".Display" aus dem VBA-Code 1 und entfernen Sie das "Apostroph" vor der Zeile ‘.Send.

4. Speichern Sie die Codes und speichern Sie die Arbeitsmappe dann als Excel-Makro-fähige Arbeitsmappe wie folgt.

4.1) Klicken Sie auf "Datei" > "Speichern unter" und wählen Sie dann einen Ordner aus, um die Datei zu speichern.
4.2) Geben Sie im Dialogfeld „Speichern unter“ den Dateinamen im Textfeld „Dateiname“ wie gewünscht ein, wählen Sie in der Dropdown-Liste „Speichern im Format“ die Option „Excel-Arbeitsmappe mit Makros“ aus und klicken Sie abschließend auf die Schaltfläche „Speichern“. Siehe Screenshot:

A screenshot of the 'Save As' dialog in Excel showing the option to save the workbook as an Excel Macro-Enabled Workbook

5. Öffnen Sie Ihre gespeicherte makrofähige Arbeitsmappe, dann wird eine E-Mail automatisch erstellt oder versendet, wenn der Tag und die Uhrzeit erreicht sind.


4. Zusätzliche Themen

Dieser Abschnitt behandelt weitere Themen, die Ihnen beim Senden von E-Mails aus Excel begegnen können.

4.1 Einen Zellbereich aus Excel per E-Mail senden (mit VBA-Skript)

Angenommen, es gibt eine monatliche Umsatz-Tabelle in einem Excel-Arbeitsblatt, wie im folgenden Screenshot dargestellt, und Sie müssen diese monatliche Umsatz-Tabelle entweder als Textinhalt einer E-Mail oder direkt als Anhang versenden. Hier bieten wir Ihnen zwei Methoden, um dies zu erledigen.

4.1.1 Einen Bereich als Teil des Hauptinhalts per E-Mail aus Excel senden

Sie können den folgenden VBA-Code ausführen, um einen Zellbereich als Teil des E-Mail-Textinhalts von Excel zu senden.

1. Drücken Sie die Tasten „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 dann das Kontrollkästchen „Microsoft Outlook 16.0 Object Library“ und klicken Sie im Dialogfeld „Verweise – VBAProject“ auf „OK“.

3. Klicken Sie auf "Einfügen" > "Modul", und fügen Sie den folgenden VBA-Code in das Fenster "Modul (Code)" ein.

VBA-Code: Einen Zellbereich als Teil des E-Mail-Textinhalts von Excel senden

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

Hinweis: Im Code,

1) In der Zeile ".To = xxx@aaa.com" ersetzen Sie bitte "xxx@aaa.com" durch die tatsächliche E-Mail-Adresse des Empfängers. Wenn Sie mehr als eine E-Mail-Adresse benötigen, trennen Sie diese bitte mit Semikolons.
2) In den folgenden zwei Zeilen:
.CC = "E-Mail-Adresse"
.BCC = "E-Mail-Adresse"
Wenn Sie die CC- und BCC-Empfänger hinzufügen möchten, ersetzen Sie den Text "E-Mail-Adresse" in den Zeilen durch die benötigten E-Mail-Adressen.
Wenn Sie die CC- und BCC-Empfänger nicht benötigen, fügen Sie einfach ein Apostroph ' vor jede Zeile.

4. Drücken Sie die Taste "F5", um den Code auszuführen. Wählen Sie im aufgepoppten Dialogfeld "Kutools für Excel" den Zellbereich aus, den Sie als Teil des E-Mail-Textes senden möchten, und klicken Sie dann auf "OK". Siehe Screenshot:

A screenshot of the Kutools for Excel dialog box where a range of cells is selected to send as part of an email body

Dann wird automatisch eine Outlook-E-Mail erstellt. Sie können sehen, dass der Bereich, den Sie im Arbeitsblatt ausgewählt haben, in den E-Mail-Text eingefügt wurde. Siehe Screenshot:

A screenshot of an Outlook email with the selected range from Excel inserted into the email body


4.1.2 Einen Bereich als Anhang aus Excel per E-Mail senden

Wenn Sie einen Zellbereich in einem Arbeitsblatt als Anhang per E-Mail direkt aus Excel versenden möchten, können Sie den folgenden VBA-Code ausprobieren.

1. Drücken Sie die Tasten "Alt" + "F11".

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

VBA-Code: Einen Bereich als Anhang per E-Mail aus Excel senden

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:

1) Ersetzen Sie in der Zeile ".To = xxx@aaa.com" bitte "xxx@aaa.com" durch die tatsächliche E-Mail-Adresse des Empfängers. Wenn Sie mehr als eine E-Mail-Adresse benötigen, trennen Sie diese bitte mit Semikolons.
2) Ändern Sie den E-Mail-Betreff und den E-Mail-Text separat in der Zeile ".Subject = "Monatlicher Umsatz für 2021"" und ".Body = "Hallo, bitte überprüfen und lesen Sie dieses Dokument."";
3) In den folgenden zwei Zeilen:
.CC = "E-Mail-Adresse"
.BCC = "E-Mail-Adresse"
Wenn Sie die CC- und BCC-Empfänger hinzufügen möchten, ersetzen Sie den Text "E-Mail-Adresse" in den Zeilen durch die benötigten E-Mail-Adressen.
Wenn Sie die CC- und BCC-Empfänger nicht benötigen, fügen Sie einfach ein Apostroph ' vor jede Zeile.

3. Drücken Sie die Taste „F5“, um den Code auszuführen. Wählen Sie im erscheinenden Dialogfeld „Kutools für Excel“ den Zellbereich aus, den Sie als Anhang in einer E-Mail senden möchten, und klicken Sie dann auf „OK“. Siehe Screenshot:

A screenshot of the Kutools for Excel dialog box where a range of cells is selected to send as an attachment in an email

Dann wird automatisch eine Outlook-E-Mail erstellt. Der Bereich der von Ihnen im Arbeitsblatt ausgewählten Zellen wird als Excel-Arbeitsmappe gespeichert und im Nachrichtenfenster angehängt. Siehe Screenshot:

A screenshot of an Outlook email with the selected range from Excel saved as an attachment


4.2 E-Mails senden, wenn eine Schaltfläche in Excel geklickt wird

Wenn Sie auf eine Befehlsschaltfläche klicken müssen, um ein Makro zur Versendung einer E-Mail aus Excel zu aktivieren, zum Beispiel das aktuelle Arbeitsblatt als Anhang an andere Personen senden möchten, indem Sie auf eine Befehlsschaltfläche im Arbeitsblatt klicken, können Sie den folgenden Schritten folgen, um dies zu erledigen.

1. Klicken Sie auf „Entwickler“ > „Einfügen“ > „Befehlsschaltfläche (ActiveX-Steuerelement)“. Zeichnen Sie anschließend eine Befehlsschaltfläche in das Arbeitsblatt.

Tipp: Wenn Sie bereits einen Befehlsbutton haben, überspringen Sie diesen Schritt.

2. Drücken Sie die Tasten "Alt" + "F11", um das Fenster "Microsoft Visual Basic for Applications" zu öffnen. Klicken Sie im Fenster auf "Einfügen" > "Modul" und fügen Sie dann den VBA-Code (der Code, der verwendet wird, um die aktuelle Arbeitsmappe als Anhang per E-Mail von Excel aus zu versenden) in das Modul (Code)-Fenster ein.

Klicken Sie hier, um den Code zu erhalten.

Hinweis: Der Name des Makros, das Sie in Schritt 2 erstellt haben, lautet "SendWorkbook".

3. Drücken Sie die Tasten „Alt“ + „Q“, um das Fenster „Microsoft Visual Basic for Applications“ zu schließen.

4. Nun müssen Sie dem Befehlsschaltfläche das Makro zuweisen. Klicken Sie mit der rechten Maustaste auf die Befehlsschaltfläche und wählen Sie "Code anzeigen" aus dem Kontextmenü.

5. Dann öffnet sich das Fenster "Microsoft Visual Basic for Applications", und Sie können die folgenden zwei Zeilen im Fenster "Sheet (Code)" sehen.

Private Sub CommandButton1_Click()
End Sub

A screenshot of the Microsoft Visual Basic for Applications window showing the CommandButton1_Click code

6. Geben Sie den Namen des vorhandenen Makros innerhalb der Subprozedur für die Befehlsschaltfläche ein.

A screenshot of editing the VBA code to assign an existing macro to the command button

7. Drücken Sie die Tasten „Alt“ + „Q“, um den „Visual Basic Editor“ zu schließen, und klicken Sie auf „Entwickler“ > „Designmodus“, um den Designmodus auszuschalten.

A screenshot of turning off Design Mode in the Developer tab

Sie können jetzt auf die Befehlstaste klicken, um eine E-Mail mit der aktuellen Arbeitsmappe als Anhang in der E-Mail zu senden.


4.3 E-Mails von einem bestimmten E-Mail-Konto senden

Normalerweise wird beim Senden einer E-Mail aus Excel mit VBA-Code das E-Mail-Konto des Absenders als Standardkonto in Outlook verwendet. Angenommen, Sie haben mehrere E-Mail-Konten in Ihrem Outlook konfiguriert und möchten stattdessen ein bestimmtes Konto verwenden, um E-Mails aus Excel zu senden, anstatt das Standardkonto zu nutzen. Der folgende VBA-Code kann helfen.

Die folgenden Codes sind in diesem Fall notwendig.

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 obigen VBA-Codes?

1) In Ihrem eigenen Code müssen Sie die Zeile wie "Dim OutlookMail As Object" durch VBA-Code 1 ersetzen.
2) Fügen Sie den VBA-Code 2 unter der Zeile "On Error Resume Next" in Ihrem Code hinzu. Geben Sie dann die E-Mail-Adresse an, die Sie zum Senden der E-Mail in VBA-Code 2 verwenden werden.

In diesem Beispiel werden wir ein bestimmtes E-Mail-Konto angeben, um die aktuelle Arbeitsmappe als Anhang von Excel zu senden. Bitte gehen Sie wie folgt vor.

1. Drücken Sie die Tasten „Alt“ + „F11“. Klicken Sie im Fenster „Microsoft Visual Basic for Applications“ auf „Extras“ > „Verweise“. Aktivieren Sie dann das Kontrollkästchen „Microsoft Outlook 16.0 Object Library“ und klicken Sie im Dialogfeld „Verweise – VBAProject“ auf „OK“.

A screenshot of the 'References – VBAProject' dialog box in Excel with the Microsoft Outlook 16.0 Object Library option selected

2. Klicken Sie auf „Einfügen“ > „Modul“. Fügen Sie dann den folgenden VBA-Code in das Fenster „Modul (Code)“ ein.

VBA-Code: Senden Sie die aktuelle Arbeitsmappe als E-Mail-Anhang von Excel über ein bestimmtes Outlook-Konto

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. Daraufhin öffnet sich eine Outlook-E-Mail-Nachricht, und Sie sehen, dass das Feld „Von“ mit dem in dem Code angegebenen E-Mail-Konto ausgefüllt ist.


4.4 E-Mail senden, wenn ein Datum erreicht ist

Wenn Sie eine E-Mail basierend auf einem bestimmten Fälligkeitsdatum senden müssen, zum Beispiel wie in dem Screenshot unten gezeigt, gibt es eine Projektübersicht: „Wenn das Fälligkeitsdatum im Bereich E2:E7 gleich oder weniger als 7 Tage vom heutigen Tag entfernt ist (angenommen, das aktuelle Datum ist der 4.8.2022)“, wird automatisch eine E-Mail an die entsprechenden Projektleiter gesendet, um sie darüber zu informieren, dass das Projekt bald ausläuft.

1. Im Arbeitsblatt, das die Projekttabelle enthält, mit der rechten Maustaste auf die Registerkarte des Blatts klicken und im Kontextmenü auf "Code anzeigen" klicken.

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

VBA-Code: Automatisches Senden einer E-Mail, wenn ein Fälligkeitsdatum erreicht 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

Hinweis: Im Code,

1) In den folgenden Zeilen enthält „E2:E7“ die Fälligkeitsdaten, auf deren Basis Sie E-Mails senden werden. „C2:C7“ enthält die E-Mail-Adressen, an die Sie die E-Mails senden werden. Und „D2:D7“ enthält die Bemerkungen, die Sie im E-Mail-Text hinzufügen werden, um die Empfänger darüber zu informieren, dass das Projekt bald ausläuft. Sie können die Bereiche bei Bedarf ändern.
Set xRgDate = Bereich("E2:E7")
Set xRgSend = Bereich("C2:C7")
Set xRgText = Bereich("D2:D7")
2) Die folgende Zeile bedeutet, dass das Fälligkeitsdatum größer als 1 Tag und gleich oder kleiner als 7 Tage ab heute sein muss. Sie können es nach Bedarf ändern.
Wenn CDate(xRgDateVal) - Date <= 7 Und CDate(xRgDateVal) - Date > 0 Dann
3) In der Zeile ".To = xxx@aaa.com" ersetzen Sie bitte "xxx@aaa.com" durch die tatsächliche E-Mail-Adresse des Empfängers. Wenn Sie mehr als eine E-Mail-Adresse benötigen, trennen Sie diese bitte durch Semikolons.
4) Ändern Sie den E-Mail-Betreff in der Zeile ".Subject = "Worksheet modified"".
5) In den folgenden zwei Zeilen:
.CC = "E-Mail-Adresse"
.BCC = "E-Mail-Adresse"
Wenn Sie die CC- und BCC-Empfänger hinzufügen möchten, ersetzen Sie den Text "E-Mail-Adresse" in den Zeilen durch die benötigten E-Mail-Adressen.
Wenn Sie die CC- und BCC-Empfänger nicht benötigen, fügen Sie einfach ein Apostroph ' vor jede Zeile.

3. Drücken Sie die Taste „F5“, um den Code auszuführen. Wenn das Ablaufdatum den Bedingungen entspricht, wird die entsprechende E-Mail erstellt. In diesem Fall werden zwei E-Mails erstellt, wie im Screenshot unten dargestellt.

A screenshot of two emails created automatically based on expiration date matching conditions in Excel


5. Ein praktisches Tool, das Ihnen hilft, ganz einfach E-Mails direkt aus Excel zu versenden.

Wenn Sie VBA-Anfänger sind, können die oben genannten Methoden möglicherweise schwer für Sie zu handhaben sein. Hier empfehlen wir die Funktion „E-Mails senden“ von „Kutools für Excel“. Mit dieser Funktion können Sie ganz einfach E-Mails mit nur wenigen Klicks direkt aus Excel versenden. Gehen Sie wie folgt vor.

Kutools für Excel bietet über 300 erweiterte Funktionen, um komplexe Aufgaben zu vereinfachen und Kreativität sowie Effizienz zu steigern. Durch die Integration mit KI-Funktionen automatisiert Kutools Aufgaben präzise und macht das Datenmanagement mühelos. Detaillierte Informationen zu Kutools für Excel... Kostenlose Testversion...
 5.1 Erstellen Sie ganz einfach eine Mailingliste, die die benötigten E-Mail-Felder enthält

Bevor Sie die Funktion 'E-Mails senden' verwenden, müssen Sie eine Mailingliste erstellen, die die benötigten E-Mail-Felder enthält. Hier kann die Funktion 'Mailing-Liste erstellen' helfen.

1. Klicken Sie auf „Kutools Plus“ > „Mailing-Liste erstellen“.

2. Im sich öffnenden Fenster „Mailing-Liste erstellen“ müssen Sie wie folgt konfigurieren.

2.1) Aktivieren Sie im Abschnitt „Spalten für Mailingliste“ die Felder, die Sie in Ihrer E-Mail benötigen.
2.2) Aktivieren Sie im Abschnitt „Anhänge hinzufügen“ ein oder mehrere Anhänge, die Sie möglicherweise benötigen.
2.3) Geben Sie einen Speicherort für die Mailingliste an;
2.4) Klicken Sie auf die Schaltfläche „Erstellen“. Siehe Screenshot:

Dann wird eine Beispielmailingliste wie in dem Screenshot unten gezeigt erstellt.

3. Nun müssen Sie die ursprünglichen Daten im Beispiel durch Ihre eigenen Felddaten ersetzen.

Sie haben nun eine Mailinglisten-Tabelle erstellt. Bitte fahren Sie fort, um die Funktion "E-Mails senden" anzuwenden, um E-Mails basierend auf den von Ihnen erstellten Feldern aus Excel zu versenden.

Kutools für Excel - Verleihen Sie Excel mit über 300 essenziellen Tools einen echten Schub. Nutzen Sie dauerhaft kostenlose KI-Funktionen! Holen Sie es sich jetzt


 5.2 Einfach E-Mails einschließlich der von Ihnen in der Mailingliste erstellten Felder senden

Nachdem Sie die Mailingliste erstellt haben (klicken Sie hier, um zu erfahren, wie), die die Felder enthält, die Sie möglicherweise in Ihren E-Mails benötigen, können Sie nun E-Mails direkt aus Excel mit diesen Feldern versenden.

1. Wählen Sie die gesamte Mailingliste aus, klicken Sie auf „Kutools Plus“ > „E-Mails senden“.

2. Im Dialogfeld „E-Mails senden“ führen Sie bitte die folgende Konfiguration durch.

2.1) Felder werden automatisch in das Dialogfeld jedes Feldes auf der Grundlage der von Ihnen in der Mailingliste angegebenen Felder übertragen.
Tipp: Wenn Sie ein bestimmtes Feld momentan nicht benötigen, wählen Sie eine leere Option in der Dropdown-Liste aus.
2.2) „Platzhalter einfügen“ (optional): Wenn Sie variable Informationen in den Text eines E-Mails einfügen müssen.
Zum Beispiel müssen Sie möglicherweise eine E-Mail an mehrere Empfänger senden, wobei jeder Empfänger einen personalisierten Namen erhält. Platzieren Sie den Cursor im E-Mail-Text an der Stelle, an der Sie den Platzhalter einfügen möchten, wählen Sie das Feld „E: Vorname“ (oder ein anderes Namensfeld in Ihrer E-Mail-Liste) aus und klicken Sie dann auf die Schaltfläche „Platzhalter einfügen“.
Wenn die Empfänger die E-Mail erhalten, bleibt der E-Mail-Text gleich, aber die Namen sind für jeden eindeutig.
2.3) Gestalten Sie den E-Mail-Text nach Bedarf;
2.4) Stellen Sie sicher, dass das Kontrollkästchen „Send emails via Outlook“ aktiviert ist;
2.5) Klicken Sie auf die Schaltfläche „Senden“. Siehe Screenshot:

3. Dann erscheint ein Dialogfeld „Kutools für Excel“, das Ihnen mitteilt, wie viele E-Mails versendet wurden. Klicken Sie auf die Schaltfläche „OK“, um dieses Dialogfeld zu schließen.

Tipp: Sie können im Ordner "Gesendete Elemente" in Ihrem Outlook nachsehen, um die gesendeten E-Mails zu überprüfen.


5.3 Einfach E-Mails mit HTML-Text (einschließlich Hyperlink, Bild, etc.) senden

Diese Funktion zum Senden von E-Mails ermöglicht es Ihnen, eine HTML-E-Mail zu erstellen, die Hyperlinks, Bilder, verschiedene Schriftgrößen und Schriftfarben usw. enthält.

Nachdem Sie eine Mailingliste erstellt haben, die die benötigten E-Mail-Felder enthält, können Sie beim Konfigurieren des Dialogfelds 'E-Mails senden' den Inhalt des Textkörpers mithilfe der Optionen in der Symbolleiste ansprechender gestalten.

Siehe den Screenshot unten:


5.4 Outlook-Standardunterschrift beim Senden von E-Mails ganz einfach einfügen

In der oben genannten Methode haben wir einen VBA-Code vorgestellt, der Ihnen hilft, E-Mails mit der Outlook-Standardunterschrift zu versenden. Mit der Funktion 'E-Mails senden' müssen Sie nur eine Option aktivieren, und die Outlook-Standardunterschrift wird automatisch in die E-Mails eingefügt, die Sie von Excel aus versenden.

Nachdem Sie eine Mailingliste erstellt haben, die die benötigten E-Mail-Felder enthält, müssen Sie beim Konfigurieren des Dialogfelds „E-Mails senden“ auf „Optionen“ > „Outlook's Signatur-Einstellungen verwenden“ klicken.

Hinweis: Stellen Sie sicher, dass vor der Option 'Use Outlook’s signature settings' ein Häkchen angezeigt wird.

Wenn Empfänger die E-Mail erhalten, können sie die Outlook-Standardunterschrift am Ende des E-Mail-Textes sehen.


5.5 E-Mails ganz einfach von einem bestimmten E-Mail-Konto senden

Um ein bestimmtes E-Mail-Konto zu verwenden, um E-Mails aus Excel zu senden, anstatt das Standardkonto zu verwenden, kann die Funktion 'E-Mails senden' ebenfalls helfen, dies ganz einfach zu erledigen.

Nachdem Sie eine Mailingliste erstellt haben, die die benötigten E-Mail-Felder enthält, müssen Sie beim Konfigurieren des Dialogfelds „E-Mails senden“ auf „Optionen“ > „Gesendet von“ klicken und dann das E-Mail-Konto auswählen, von dem Sie die E-Mails senden möchten.

Hinweis: Nachdem Sie das E-Mail-Konto ausgewählt haben, wird ein Häkchen davor angezeigt.

Klicken Sie hier, um mehr über diese E-Mail-Sendefunktion zu erfahren.

Kutools für Excel - Verleihen Sie Excel mit über 300 essenziellen Tools einen echten Schub. Nutzen Sie dauerhaft kostenlose KI-Funktionen! Holen Sie es sich jetzt

Zusammenfassend lässt sich sagen, dass das Senden von E-Mails aus Excel in unserer täglichen Arbeit sehr nützlich ist. Dieser Artikel behandelt umfassendere Themen zum Versand von E-Mails aus Excel. Wenn es andere Themen oder einfachere Lösungen gibt, hinterlassen Sie bitte einen Kommentar, um mich darüber zu informieren.

Beste Büroproduktivitätswerkzeuge

🤖 Kutools AI-Assistent: Revolutionieren Sie die Datenanalyse basierend auf: Intelligente Ausführung   |  Code generieren  |  Benutzerdefinierte Formeln erstellen  |  Daten analysieren und Diagramme generieren  |  Erweiterte Funktionen aufrufen
Beliebte Funktionen: Finden, Hervorheben oder Doppelte markieren   |  Leere Zeilen löschen   |  Spalten oder Zellen kombinieren ohne Datenverlust   |   Runden ...
Erweiterte SVERWEIS: Mehrfachkriterien SVERWEIS    Mehrfachwert SVERWEIS  |   Mehrblatt-SVERWEIS   |   Fuzzy Match ....
Erweiterte Dropdown-Liste: Schnell Dropdown-Liste erstellen   |  Abhängige Dropdown-Liste   |  Mehrfachauswahl Dropdown-Liste ....
Spaltenmanager: Eine bestimmte Anzahl von Spalten hinzufügen  |  Spalten verschieben  |  Sichtbarkeitsstatus ausgeblendeter Spalten umschalten  |  Bereiche & Spalten vergleichen ...
Hervorgehobene Funktionen: Gitterfokus   |  Entwurfsansicht   |   Erweiterte Formelleiste    Arbeitsmappe & Arbeitsblatt-Manager   |  AutoText-Bibliothek (Auto Text)   |  Datumsauswahl   |  Daten zusammenführen   |  Zellen verschlüsseln/entschlüsseln    E-Mail senden nach Liste   |  Spezialfilter   |   Spezialfilter (Filtern fett/kursiv/durchgestrichen...) ...
Top15 Werkzeugsets12 Textwerkzeuge (Text hinzufügen, Bestimmte Zeichen löschen, ...)   |   50+ Diagramm typen (Gantt-Diagramm, ...)   |   40+ Praktische Formeln (Alter basierend auf dem Geburtsdatum berechnen, ...)   |   19 Einfügewerkzeuge (QR-Code einfügen, Bild aus Pfad einfügen, ...)   |   12 Konvertierungswerkzeuge (In Wörter umwandeln, Währungsumrechnung, ...)   |   7 Konsolidieren & Aufteilen Werkzeuge (Erweiterte Zeilen zusammenführen, Zellen aufteilen, ...)   |   ... und mehr

Verbessern Sie Ihre Excel-Fähigkeiten mit Kutools für Excel und erleben Sie Effizienz wie nie zuvor. Kutools für Excel bietet über300 erweiterte Funktionen zur Steigerung der Produktivität und Zeitersparnis.  Klicken Sie hier, um die Funktion zu erhalten, die Sie am meisten benötigen...


Office Tab bringt eine Registerkartenoberfläche zu Office und macht Ihre Arbeit viel einfacher

  • Aktivieren Sie die Bearbeitung und das Lesen mit Registerkarten in Word, Excel, PowerPoint, Publisher, Access, Visio und Project.
  • Öffnen und erstellen Sie mehrere Dokumente in neuen Registerkarten desselben Fensters, anstatt in neuen Fenstern.
  • Steigert Ihre Produktivität um50 % und reduziert täglich hunderte von Mausklicks für Sie!