KutoolsforOffice — Eine Lösung, fünf leistungsstarke Tools.Mehr erreichen mit weniger Aufwand.März-Aktion: 20 % Rabatt

Excel-Tutorial – E-Mails aus Excel versenden

AutorSiluvia Änderungsdatum

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 ]

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

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

„Link_Ziel“ (erforderlich): Der Pfad und Dateiname des zu öffnenden Dokuments;
Tipp: In diesem Tutorial sollten alle Felder, die Sie für eine E-Mail benötigen – wie Empfänger-E-Mail-Adresse, Cc-Empfänger, Betreffzeile und Textkörper – im ersten Argument „Link_Ziel“ platziert werden.
„Anzeigename“ (optional): Der Sprungwert, der in der Zelle angezeigt wird.

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:

„?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, ergänzen Sie die Formel einfach um „&subject=“ – so geht’s:

„&subject="& 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 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.

„&body="& E2
wobei E2 den Nachrichtentext 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 „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:

2,1) Wählen Sie im linken Bereich „E-Mail-Adresse“ aus.
2,2) Geben Sie im Textfeld „Anzuzeigender Text“ den Text ein, der in der Zelle angezeigt werden soll;
Tipp: In diesem Dialogfeld können Sie keine Zellbezüge verwenden. Geben Sie daher die E-Mail-Felder manuell wie folgt ein.
2,3) Geben Sie im Textfeld „E-Mail-Adresse“ folgenden E-Mail-Adresse ein.
mailto:E-Mail-Adresse
Ersetzen Sie bitte den Text „E-Mail-Adresse“ durch Ihre tatsächliche E-Mail-Adresse. Falls Sie mehrere E-Mail-Adresse haben, trennen Sie diese durch ein Semikolon.
2,4) Im Textfeld „Betreff“ können Sie direkt Ihren E-Mail-Betreff und den E-Mail-Text festlegen. Konfigurieren Sie dies wie folgt:
E-Mail-Betreff&body=E-Mail-Nachricht
In diesem Fall gebe ich „Monthly sale&body=Hi,%0AEmail received“ ein.
wobei der Betreff „Monthly sale“ lautet;
und
der E-Mail-Text wie folgt lautet:
Hi,
E-Mail erhalten. („%0A“ ist der Wagenrücklauf-Zeichencode, der von Outlook erkannt wird.)
2,5) Klicken Sie auf die Schaltfläche „OK“, um den Hyperlink zu speichern. Siehe Screenshot:

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) Mit dieser Methode mussten Sie jeden E-Mail-Hyperlink manuell erstellen.
2) Mit dieser Methode können Sie kein CC-Feld zu E-Mails hinzufügen. Wenn Sie 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 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“.

Ein Screenshot des Dialogfelds „Kutools for Excel“, das nach der Liste der E-Mail-Adressen fragt

Hinweise:

1) Wenn Sie nicht möchten, dass das obige Dialogfeld erscheint, und stattdessen den Bereich der E-Mail-Adresse direkt im Code festlegen möchten, ersetzen Sie diese Zeile:
Set xRg = Application.InputBox("Please select the addresses list:", „Kutools for Excel", xTxt, , , , , 8)
durch
Set xRg = Range("A2:A7")
2) Sie können Ihren eigenen E-Mail-Betreff und Nachrichtentext in den folgenden Zeilen festlegen:
.Subject = „Test"
.Body = "Dear " _
        & vbNewLine & vbNewLine & _
        "This is a test email " & _
        "sending in Excel"
3) Um die E-Mail direkt zu versenden, ohne das folgende neue Nachrichtenfenster zu öffnen, müssen Sie diese Zeile ersetzen:
.Display
durch
.Send

Nach Ausführung des Codes werden alle E-Mail-Adressen aus dem ausgewählten Bereich im Feld „An“ des Nachrichtenfensters angezeigt. Siehe Screenshot:

Ein Screenshot des E-Mail-Nachrichtenfensters mit allen E-Mail-Adressen im Feld „An“


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.

Ein Screenshot des Dialogfelds „Verweise – VBAProject“ in Excel mit der ausgewählten Option „Microsoft Outlook 16.0 Object Library“

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“.

Ein Screenshot des Dialogfelds „Kutools for Excel“, das zur Auswahl der E-Mail-Adressliste auffordert

Hinweise:

1) Wenn Sie nicht möchten, dass das obige Dialogfeld erscheint, und stattdessen den Bereich der E-Mail-Adresse direkt im Code festlegen möchten, ersetzen Sie diese Zeile:
Set xRg = Application.InputBox("Please select the addresses list:", „Kutools for Excel", xTxt, , , , , 8)
durch
Set xRg = Range("A2:A7")
2) Sie können Ihren eigenen E-Mail-Betreff und Nachrichtentext in den folgenden Zeilen festlegen:
.Subject = "Test"
.Body = "Dear " _
        & vbNewLine & vbNewLine & _
        "This is a test email " & _
        "sending in Excel"
3) Um die E-Mail direkt zu versenden, ohne die folgenden Nachrichtenfenster zu öffnen, müssen Sie diese Zeile ersetzen:
.Display
durch
.Send

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.

Ein Screenshot mehrerer Outlook-Nachrichtenfenster mit separaten E-Mail-Adressen im Feld „An“

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:

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

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.

Ein Screenshot des Dialogfelds „Verweise – VBAProject“ in Excel mit der ausgewählten Option „Microsoft Outlook 16.0 Object Library“

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“.

Ein Screenshot des „Durchsuchen“-Fensters zum Auswählen von Dateien, die einer E-Mail in Excel angehängt werden sollen

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

Ein Screenshot des Outlook-Nachrichtenfensters mit den ausgewählten Dateien als Anhänge


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:

1) Ersetzen Sie in der Zeile „.To = xxx@aaa.com“ „xxx@aaa.com“ durch die tatsächliche E-Mail-Adresse des Empfängers. Falls Sie mehrere E-Mail-Adresse benötigen, trennen Sie diese durch Semikolons.
2) Ändern Sie separat den E-Mail-Betreff und den E-Mail-Text in den Zeilen „.Subject = "kte features"“ und „.Body = " Please check and read this document."“;
3) In den folgenden beiden Zeilen:
.CC = „email address"
.BCC = „email address"
Wenn Sie CC- und BCC-Empfänger hinzufügen möchten, ersetzen Sie den Text „"E-Mail-Adresse"“ in den Zeilen durch die gewünschten E-Mail-Adresse.
Wenn Sie keine CC- und BCC-Empfänger benötigen, fügen Sie einfach ein Apostroph 'vor jede Zeile ein.

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:

Ein Screenshot des Outlook-Nachrichtenfensters mit dem aktuellen Arbeitsblatt, das als Excel-Arbeitsmappe gespeichert und angehängt wurde

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:

1) Ersetzen Sie in der Zeile „.To = xxx@aaa.com“ „xxx@aaa.com“ durch die tatsächliche E-Mail-Adresse des Empfängers. Falls Sie mehrere E-Mail-Adresse benötigen, trennen Sie diese durch Semikolons.
2) Ändern Sie separat den E-Mail-Betreff und den E-Mail-Text in den Zeilen „.Subject = "kte features"“ und „.Body = " Please check and read this document."“;
3) In den folgenden beiden Zeilen:
.CC = „email address"
.BCC = „email address"
Wenn Sie CC- und BCC-Empfänger hinzufügen möchten, ersetzen Sie den Text „"E-Mail-Adresse"“ in den Zeilen durch die gewünschten E-Mail-Adresse.
Wenn Sie keine CC- und BCC-Empfänger benötigen, fügen Sie einfach ein Apostroph ' vor jede Zeile ein.

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:

Ein Screenshot des Outlook-Nachrichtenfensters mit der aktuellen Arbeitsmappe, die automatisch angehängt wurde


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:

1) Ersetzen Sie in der Zeile „.To = xxx@aaa.com“ „xxx@aaa.com“ durch die tatsächliche E-Mail-Adresse des Empfängers. Falls Sie mehrere E-Mail-Adresse benötigen, trennen Sie diese durch Semikolons.
2) Ändern Sie separat den E-Mail-Betreff und den E-Mail-Text in den Zeilen „.Subject = "test"“ und „.Body = "test"“;
3) In den folgenden beiden Zeilen:
.CC = „Email Address"
.BCC = „Email Address"
Wenn Sie CC- und BCC-Empfänger hinzufügen möchten, ersetzen Sie den Text „"E-Mail-Adresse"“ in den Zeilen durch die gewünschten E-Mail-Adresse.
Wenn Sie keine CC- und BCC-Empfänger benötigen, fügen Sie einfach ein Apostroph ' vor jede Zeile ein.
4) Der Name der PDF-Dateien entspricht dem Namen der ursprünglichen Arbeitsmappe. Außerdem wird der Zeitpunkt der Codeausführung ebenfalls dem Arbeitsmappenname 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.
FileName = Left(Wb.Name, (InStrRev(Wb.Name, ".", -[[PH_372]], vbTextCompare) - [[PH_371]])) & Format(Now, "dd-mmm-yy h-mm-ss") & „.pdf"

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:

Ein Screenshot des Outlook-Nachrichtenfensters mit der aktuellen Arbeitsmappe, die als PDF-Datei angehängt wurde


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:

1) Ersetzen Sie in der Zeile „.To = xxx@aaa.com“ „xxx@aaa.com“ durch die tatsächliche E-Mail-Adresse des Empfängers. Falls Sie mehrere E-Mail-Adresse benötigen, trennen Sie diese durch Semikolons.
2) Ändern Sie separat den E-Mail-Betreff und den E-Mail-Text in den Zeilen „.Subject = "test"“ und „.Body = "test"“;
3) In den folgenden beiden Zeilen:
.CC = „Email Address"
.BCC = „Email Address"
Wenn Sie CC- und BCC-Empfänger hinzufügen möchten, ersetzen Sie den Text „"E-Mail-Adresse"“ in den Zeilen durch die gewünschten E-Mail-Adresse.
Wenn Sie keine CC- und BCC-Empfänger benötigen, fügen Sie einfach ein Apostroph ' vor jede Zeile ein.
4) Der Name der PDF-Dateien lautet: Name der ursprünglichen Arbeitsmappe_Name des ursprünglichen Arbeitsblatts. In diesem Fall lautet der Name der PDF-Datei „Monthly sales_sales report“.

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:

Ein Screenshot des Outlook-Nachrichtenfensters mit dem aktuellen Arbeitsblatt, das als PDF-Datei angehängt wurde


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:

1) Ersetzen Sie die Zeile „.Body“ durch „VBA code 1“;
2) Verschieben Sie die Zeile „.Display“ unter die Zeile „With OutlookMail“ (bzw. „With xMailOut“ in anderen Codes). Siehe Screenshot:

Ein Screenshot mit dem geänderten VBA-Code, bei dem die Zeile .Body ersetzt und .Display innerhalb des With-OutlookMail-Blocks platziert wurde

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.

Ein Screenshot einer E-Mail in Outlook mit der automatisch am Ende des Nachrichtentexts eingefügten Standardsignatur


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:

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

Ab sofort wird automatisch eine E-Mail erstellt, sobald der Wert in Zelle D6 10.000 übersteigt – wie im folgenden Screenshot gezeigt.

Ein Screenshot einer in Outlook erstellten E-Mail, die ausgelöst wird, wenn der Wert in Zelle D6 in Excel 10000 überschreitet


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

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

Ab sofort wird automatisch eine Outlook-Nachricht erstellt, sobald sich der Wert in Zelle B14 ändert – wie im folgenden Screenshot veranschaulicht.

Ein Screenshot einer in Outlook erstellten E-Mail, die ausgelöst wird, wenn sich der Wert in Zelle B14 ändert


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

1) Ersetzen Sie in der Zeile „.To = xxx@aaa.com“ „xxx@aaa.com“ durch die tatsächliche E-Mail-Adresse des Empfängers. Falls Sie mehrere E-Mail-Adresse benötigen, trennen Sie diese durch Semikolons.
2) Ändern Sie separat den E-Mail-Betreff und den Nachrichtentext in den Zeilen „.Subject = "The workbook has been updated"" and ".Body = "Hi," & Chr([[PH_422]]) & Chr(13) & "File is now updated."“.
3) In den folgenden beiden Zeilen:
.CC = „Email Address"
.BCC = „Email Address"
Wenn Sie die CC- und BCC-Empfänger hinzufügen möchten, ersetzen Sie den Text „E-Mail-Adresse“ in den Zeilen durch die gewünschten E-Mail-Adresse.
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 – 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:

Ein Screenshot einer Outlook-E-Mail mit der aktuellen Arbeitsmappe als Anhang, bereit zum automatischen Versand

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:

1) Klicken Sie auf „Datei“ > „Speichern unter“ und wählen Sie anschließend einen Ordner zum Speichern der Datei aus.
2) Benennen Sie im Dialogfeld „Speichern unter“ die Datei im Textfeld „Dateiname“ entsprechend Ihren Anforderungen um, wählen Sie im Dropdown-Liste „Speichern im Format“ die Option „Excel-Arbeitsmappe mit Makros“ aus und klicken Sie abschließend auf die Schaltfläche „Speichern“. Siehe Screenshot:

Ein Screenshot des Dialogfelds „Speichern unter“ in Excel mit der Option, die Arbeitsmappe als makrofähige Excel-Arbeitsmappe zu speichern


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.

Ein Screenshot des VBA-Code-Editors mit dem Ereignis „Workbook_Open“ und der Funktion „Application.OnTime“ zur zeitgesteuerten E-Mail-Versendung

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:

1) Im VBA-Code 1 bedeutet „Friday“ in der folgenden Zeile, dass die E-Mail automatisch jeden Freitag versendet wird;
If Weekday(Date) = vbFriday Then
2) Im VBA-Code 1 und im VBA-Code 2 bedeutet die Uhrzeit „09:00:00“, dass die E-Mail an einem bestimmten Tag um 9 Uhr morgens 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 möchten und die E-Mail direkt versenden 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 anschließend die Arbeitsmappe wie folgt als makrofähige Excel-Arbeitsmappe.

4,1) Klicken Sie auf „Datei“ > „Speichern unter“ und wählen Sie anschließend einen Ordner zum Speichern der Datei aus.
4,2) Benennen Sie im Dialogfeld „Speichern unter“ die Datei im Textfeld „Dateiname“ entsprechend Ihren Anforderungen um, wählen Sie im Dropdown-Liste „Speichern im Format“ die Option „Excel-Arbeitsmappe mit Makros“ aus und klicken Sie abschließend auf die Schaltfläche „Speichern“. Siehe Screenshot:

Ein Screenshot des Dialogfelds „Speichern unter“ in Excel mit der Option, die Arbeitsmappe als makrofähige Excel-Arbeitsmappe zu speichern

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

1) Ersetzen Sie in der Zeile „.To = xxx@aaa.com“ „xxx@aaa.com“ durch die tatsächliche E-Mail-Adresse des Empfängers. Falls Sie mehrere E-Mail-Adresse benötigen, trennen Sie diese bitte durch Semikolons.
2) In den folgenden beiden Zeilen:
.CC = „Email Address"
.BCC = „Email Address"
Wenn Sie die CC- und BCC-Empfänger hinzufügen möchten, ersetzen Sie den Text „E-Mail-Adresse“ in den Zeilen durch die gewünschten E-Mail-Adresse.
Wenn Sie die CC- und BCC-Empfänger nicht benötigen, fügen Sie einfach ein Apostroph ' vor jede Zeile ein.

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:

Ein Screenshot des Dialogfelds Kutools for Excel, in dem ein Zellbereich ausgewählt wird, um ihn als Teil des E-Mail-Textes zu versenden

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

Ein Screenshot einer Outlook-E-Mail mit dem ausgewählten Bereich aus Excel im Nachrichtentext


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:

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

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:

Ein Screenshot des Dialogfelds Kutools for Excel, in dem ein Zellbereich ausgewählt wird, um ihn als Anhang einer E-Mail zu versenden

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:

Ein Screenshot einer Outlook-E-Mail mit dem ausgewählten Bereich aus Excel, der als Anhang gespeichert wurde


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

Ein Screenshot des Microsoft Visual Basic for Applications-Fensters mit dem Code für CommandButton1_Click

6. Geben Sie den Namen des vorhandenen Makros innerhalb der Unterroutine der Befehlsschaltfläche ein.

Ein Screenshot der Bearbeitung des VBA-Codes, um einem Befehlsschaltflächen-Steuerelement ein vorhandenes Makro zuzuweisen

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.

Ein Screenshot der Deaktivierung des Entwurfsmodus im Entwickler-Tab

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?

1) In Ihrem eigenen Code müssen Sie eine Zeile wie „Dim OutlookMail As Object“ durch den VBA-Code 1 ersetzen;
2) Fügen Sie den VBA-Code 2 unterhalb der Zeile „On Error Resume Next“ in Ihren Code ein. Geben Sie anschließend im VBA-Code 2 das von Ihnen zu verwendende E-Mail-Adresse zum Versenden der E-Mail an.

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“.

Ein Screenshot des Dialogfelds „Verweise – VBAProject“ in Excel mit der ausgewählten Option „Microsoft Outlook 16.0 Object Library“

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

1) In den folgenden Zeilen enthält „E2:E7“ die Fälligkeitsdatum, auf deren Grundlage Sie E-Mails versenden werden. „C2:C7“ enthält die E-Mail-Adresse, an die Sie E-Mails senden werden. Und „D2:D7“ enthält die Bemerkungen, die Sie in den E-Mail-Text einfügen, um die Empfänger darauf hinzuweisen, dass das Projekt bald abläuft. Sie können die Bereiche nach Bedarf ändern.
Set xRgDate = Range("E2:E7")
Set xRgSend = Range("C2:C7")
Set xRgText = Range("D2:D7")
2) Die folgende Zeile bedeutet, dass der Fälligkeitsdatum größer als 1 Tag und kleiner oder gleich 7 Tagen ab heute sein muss. Sie können dies nach Bedarf anpassen.
If CDate(xRgDateVal) - Date 0 Then
3) Ersetzen Sie in der Zeile „.To = xxx@aaa.com“ „xxx@aaa.com“ durch die tatsächliche E-Mail-Adresse des Empfängers. Falls Sie mehrere E-Mail-Adresse benötigen, trennen Sie diese bitte durch Semikolons.
4) Ändern Sie den E-Mail-Betreff in der Zeile „.Subject = „Arbeitsblatt geändert"“.
5) In den folgenden beiden Zeilen:
.CC = „Email Address"
.BCC = „Email Address"
Wenn Sie die CC- und BCC-Empfänger hinzufügen möchten, ersetzen Sie den Text „E-Mail-Adresse“ in den Zeilen durch die gewünschten E-Mail-Adresse.
Wenn Sie die CC- und BCC-Empfänger nicht benötigen, fügen Sie einfach ein Apostroph ' vor jede Zeile ein.

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.

Ein Screenshot zweier automatisch erstellter E-Mails basierend auf Abgleichsbedingungen für Ablaufdaten in Excel


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.

Kutools für Excelbietet über 300 erweiterte Funktionen, um komplexe Aufgaben zu vereinfachen und so Kreativität sowie Effizienz zu steigern.Mit KI-Funktionen integriertautomatisiert Kutools Aufgaben präzise und macht die Datenverwaltung mühelos.Detaillierte Informationen zu Kutools für Excel...         Kostenlose Testversion...
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.

2,1) Markieren Sie im Abschnitt „Spalten auswählen, die in der Mailing-Liste enthalten sein sollen“ die Felder, die Sie in Ihrer E-Mail benötigen;
2,2) Markieren Sie im Abschnitt „Anhang“ eine oder mehrere Anhänge, die Sie ggf. benötigen;
2,3) Geben Sie einen Speicherort für den E-Mail-Liste an;
2,4) Klicken Sie auf die Schaltfläche „Erstellen“. Siehe Screenshot:

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.

2,1) Die Felder werden automatisch anhand der im E-Mail-Liste angegebenen Felder in das Dialogfeld jedes Feldes eingefügt;
Tipp: Wenn Sie ein bestimmtes Feld aktuell nicht benötigen, wählen Sie eine leere Option im Dropdown-Liste aus.
2,2) „Platzhalter einfügen“ (optional): Falls Sie variable Informationen in den E-Mail-Textkörper einfügen möchten.
Beispielsweise könnten Sie eine E-Mail an mehrere Empfänger mit personalisierten Namen versenden müssen. Setzen Sie dazu den Cursor an die Stelle im E-Mail-Textkörper, an der der Platzhalter eingefügt werden soll, wählen Sie das Feld „E: Vorname“ (oder ein anderes Namensfeld aus Ihrer Empfängerliste) aus und klicken anschließend auf die Schaltfläche „Platzhalter einfügen“;
Wenn die Empfänger die E-Mail erhalten, bleibt der Textkörper identisch, aber die Namen sind für jeden Empfänger individuell.
2,3) Gestalten Sie den E-Mail-Textkörper nach Ihren Wünschen;
2,4) Stellen Sie sicher, dass das Kontrollkästchen „Mit Outlook senden“ aktiviert ist;
2,5) Klicken Sie auf die Schaltfläche „Senden“. Siehe Screenshot:

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

🤖KUTOOLS AI-Assistent: Revolutionieren Sie Datenanalyse basierend auf:Intelligente Ausführung   |  Code generieren|  benutzerdefinierte Formeln erstellen  |  Daten analysieren und Diagramme erstellen|  Erweiterte Funktionen aufrufen
Beliebte Funktionen:Suchen, hervorheben oder Doppelte markieren   |  Leere Zeilen löschen   |  Spalten kombinieren oder Zellen ohne Datenverlust   |   Runden ohne Formel...
Erweiterte SVERWEIS:VLookup mit mehreren Kriterien  |  VLookup mit mehreren Werten  |   VLookup über mehrere Arbeitsblätter hinweg   |   Fuzzy Match....
Erweiterte Dropdown-Liste:Schnell eine Dropdown-Liste erstellen   |  Abhängige Dropdown-Liste   |  Mehrfachauswahl-Dropdown-Liste....
Spalten-Manager:Eine bestimmte Anzahl von Spalten hinzufügen|Spalten verschieben|Sichtbarkeitsstatus ausgeblendeter Spalten umschalten|Bereiche & Spalten vergleichen...
Hervorgehobene Funktionen:Gitterfokus   |  Entwurf   |Erweiterte Formelleiste   | Arbeitsmappen- & Blatt-Manager   |  Ressourcenbibliothek(AutoText)|  Datumsauswahl   |  Arbeitsblätter konsolidieren  |  Verschlüsseln/Zellen entschlüsseln   | E-Mails per Liste versenden   |  Super Filter   |   Spezialfilter(Zellen mit fettgedruckter Schrift filtern/kursiv/durchgestrichen...) ...
Top-15-Toolsets:12-Text-Tools(Text hinzufügen,Bestimmte Zeichen löschen, ...)|   50+-Diagramm-Typen(Gantt-Diagramm, ...)|   40+ Praktische Formeln(Alter basierend auf dem Geburtstag berechnen, ...)|   19-Einfüge-Tools(QR-Code einfügen,Bild aus Pfad einfügen, ...)|   12-Konvertierungs-Tools(In Wörter umwandeln,Wechselkursumrechnung, ...)|   7-Vereinigen/Aufteilen-Tools(Erweiterte Zeilen zusammenführen,Zellen aufteilen, ...)|... und mehr
Verwenden Sie Kutools in Ihrer bevorzugten Sprache – unterstützt Englisch, Spanisch, Deutsch, Französisch, Chinesisch und 40+ weitere Sprachen!

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.

ExcelWordOutlookTabsPowerPoint
  • 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