Dieses Praxisbeispiel zeigt, wie Sie ein einzelnes Excel Tabellenblatt per E-Mail versenden. Das VBA Makro erstellt automatisch eine neue Outlook Nachricht, hängt das aktive Tabellenblatt als eigene Arbeitsmappe an und zeigt die E-Mail zur finalen Prüfung an. So sparen Sie Zeit beim wiederkehrenden Versand von Berichten, Auswertungen und Statuslisten.
Voraussetzungen für den E-Mail Versand aus Excel
Für den automatisierten E-Mail Versand benötigen Sie Excel unter Windows und ein lokal installiertes Outlook, das eingerichtet und startbereit ist. Das Makro verwendet late binding über CreateObject, daher ist keine zusätzliche VBA Referenz erforderlich. Stellen Sie sicher, dass der temporäre Ordner C:\Temp vorhanden ist oder passen Sie den Pfad im Code an. Aktivieren Sie Makros in den Excel Einstellungen, damit das Makro ausgeführt werden kann.
So funktioniert das Makro zum Tabellenblatt per E-Mail versenden
Das Makro kopiert das aktive Arbeitsblatt in eine neue Arbeitsmappe, speichert diese temporär im angegebenen Verzeichnis und erstellt anschließend eine Outlook E-Mail mit dem neuen Dokument als Anhang. Die E-Mail wird nicht sofort versendet, sie wird zunächst angezeigt. Dadurch können Sie Empfänger, Betreff und E-Mail Text ergänzen oder anpassen, bevor Sie die Nachricht endgültig versenden.
Schritt für Schritt zum E-Mail Anhang aus Excel
- Öffnen Sie die Excel Arbeitsmappe und aktivieren Sie das Tabellenblatt, das versendet werden soll.
- Öffnen Sie den VBA Editor mit Alt F11.
- Fügen Sie über Einfügen Modul ein neues Standardmodul ein.
- Kopieren Sie den unten stehenden Code vollständig in das Modul.
- Prüfen Sie den Pfad für die temporäre Speicherung, standardmäßig C:\Temp, und passen Sie ihn bei Bedarf an.
- Tragen Sie bei Bedarf im Code Empfänger, Kopie und Betreff in den Zeilen .To, .CC und .Subject vorab ein.
- Starten Sie das Makro mit F5 oder über Entwicklertools Makros. Outlook öffnet eine neue E-Mail mit dem aktuellen Tabellenblatt als Anhang.
VBA Code für den E-Mail Versand
Sub einzelnes_Blatt_senden()
'** Das aktive Tabellenblatt wird über Outlook versendet
'** Dimensionierung der Variablen
Dim strBlatt As String
Dim strDatei As String
Dim strPfad As String
Dim outObj As Object
Dim Mail As Object
Dim strBodyText As String
Set outObj = CreateObject("Outlook.Application")
Set Mail = outObj.CreateItem(0)
'** Pfad für temporäre Zwischenspeicherung angeben
strPfad = "C:\Temp" 'entsprechend anpassen
'** Aktuelles aktives Blatt in neue Arbeitsmappe kopieren
strBlatt = ActiveSheet.Name
'** Gewähltes Tabellenblatt kopieren
Sheets(strBlatt).Copy
'** Blatt temporär in vorgegebenes Verzeichnis abspeichern
ActiveWorkbook.SaveAs strPfad & "\" & ActiveSheet.Name
'** Pfad und Dateiname der neuen Datei zwischenspeichern
strDatei = ActiveWorkbook.FullName
'** Body-Text festlegen
strBodyText = _
"Mit freundlichen Grüßen" & Chr(13) & Chr(13) & _
"Alois Eckl" & Chr(13) & _
"Excel-Inside Solutions, Grabbestr. 25, 90427 Nürnberg" & Chr(13) & _
"Auftragsprogrammierung - Anwendungsentwicklung" & Chr(13) & _
'** Mail erzeugen
With Mail
'.To = ""
'.CC = ""
.Subject = "" 'Betreff
.BodyFormat = 2 '2 = HTML, 1 = Text
.Attachments.Add strDatei 'Anhang
.Body = strBodyText 'Bodytext / Signatur
End With
'** Erzeugte Datei schließen
Workbooks(Dir(strDatei)).Close
'** Erzeugte Datei wieder löschen
Kill (strDatei)
'** E-Mail anzeigen
Mail.Display
End Sub
Felder anpassen Empfänger, Betreff und Signatur
Sie können die Empfänger E-Mail Adresse direkt im Code in der Zeile .To eintragen. Zusätzliche Empfänger für Kopien setzen Sie über .CC. Einen Betreff vergeben Sie über .Subject. Der Body der Nachricht wird über die Variable strBodyText mit einer Signatur befüllt. Den Text können Sie beliebig ändern. Das Makro setzt BodyFormat auf HTML, dennoch wird der Body als reiner Text übergeben. Prüfen Sie in Outlook vor dem Versand, ob Formatierung und Zeilenumbrüche Ihren Vorgaben entsprechen.
Praxisbeispiele für den Versand eines Tabellenblatts per E-Mail
Versenden Sie Monatsberichte oder Projektauswertungen schnell an feste Verteiler, indem Sie in .To die zentrale Adresse Ihres Teams hinterlegen und im Betreff den Berichtsmonat ergänzen. Für Ad-hoc Analysen belassen Sie .To leer und tragen die gewünschten Empfänger erst im angezeigten Outlook Fenster ein. So behalten Sie die Kontrolle und können den E-Mail Text individuell ergänzen.
Typische Fehlerquellen und Lösungen
- Der Ordner C:\Temp existiert nicht. Erstellen Sie den Ordner oder passen Sie den Pfad im Code an, damit die temporäre Datei gespeichert werden kann.
- Outlook ist nicht installiert oder nicht eingerichtet. Starten Sie Outlook einmal manuell und stellen Sie sicher, dass ein Profil vorhanden ist.
- Die temporäre Datei hat keine Dateiendung. In manchen Umgebungen erleichtert eine Endung wie .xlsx das Öffnen der Datei. Ergänzen Sie den Dateinamen in der SaveAs Zeile um eine Endung, wenn Ihre Umgebung dies erfordert.
- Makros sind deaktiviert. Aktivieren Sie Makros in den Excel Trust Center Einstellungen und speichern Sie die Arbeitsmappe als xlsm.
- Outlook Sicherheitsabfragen verhindern den Zugriff. Passen Sie gegebenenfalls die Programmgesteuerter Zugriff Einstellung im Trust Center an oder nutzen Sie signierte Makros.
- Das aktive Blatt ist nicht das gewünschte Blatt. Aktivieren Sie vor dem Start des Makros das richtige Tabellenblatt, da genau dieses als Anhang verwendet wird.
- Temporäre Dateien bleiben erhalten. Bei Fehlern vor dem Löschen kann die Datei im Temp Ordner liegen bleiben, löschen Sie diese bei Bedarf manuell.
Sicherheit und Datenschutz beim E-Mail Versand
Prüfen Sie vor dem Versand die Empfänger, den Betreff und die Inhalte sorgfältig. Anhänge können vertrauliche Daten enthalten, halten Sie interne Richtlinien und die DSGVO ein. Da das Makro die E-Mail nur anzeigt, behalten Sie die volle Kontrolle und entscheiden selbst über den Versandzeitpunkt.
Fazit
Mit diesem VBA Makro versenden Sie ein einzelnes Excel Tabellenblatt per E-Mail schnell, sicher und nachvollziehbar. Sie automatisieren den Anhang, behalten aber durch die Anzeige der E-Mail in Outlook die letzte Kontrolle über Empfänger, Betreff und Text. So verbinden Sie Effizienz mit Qualität im täglichen Reporting.

