Excel-Tutorial – E-Mails aus Excel senden
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]
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
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.
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.
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.
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.

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.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“.
Hinweise:
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
Nachdem der Code ausgeführt wurde, werden alle E-Mail-Adressen im ausgewählten Bereich im 'An'-Feld des Nachrichtenfensters angezeigt. Siehe Screenshot:
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.
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“.
Hinweise:
.Subject = "Test"
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
In diesem Beispiel befinden sich sechs E-Mail-Adressen im ausgewählten Bereich, daher werden automatisch sechs Outlook-Nachrichtenfenster erstellt, wobei jede E-Mail-Adresse separat im 'An'-Feld aufgelistet wird, wie im Screenshot unten zu sehen.
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:
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.
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“.
Dann öffnet sich ein Nachrichtenfenster. Sie können sehen, dass die ausgewählten Dateien als Anhänge im Feld 'Angehängte Dateien' angezeigt werden.
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:
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:
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:
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:
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:
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:
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:
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:
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:
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.
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:
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")
Ab sofort wird eine E-Mail erstellt, wenn der Wert in Zelle D6 10000 überschreitet, wie im Screenshot unten dargestellt.
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,
Ab sofort wird jedes Mal, wenn sich der Wert in Zelle B14 ändert, automatisch eine Outlook-Nachricht erstellt, wie im Screenshot unten dargestellt.
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,
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:
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.
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.
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:
4. Speichern Sie die Codes und speichern Sie die Arbeitsmappe dann als Excel-Makro-fähige Arbeitsmappe wie folgt.
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,
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:
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:
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:
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:
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:
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
6. Geben Sie den Namen des vorhandenen Makros innerhalb der Subprozedur für die Befehlsschaltfläche ein.
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.
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?
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“.
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,
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.
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.
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.
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.
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
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!