Tabellenblatt in Excel über ein VBA-Makro per Mail verschicken
Stand: 12.08.2026, 14:46 Uhr
Kommentare
Wer regelmäßig Daten aus Excel weitergeben muss, kann das aktive Tabellenblatt per VBA mit wenigen Zeilen als eigene Arbeitsmappe an eine E-Mail anhängen. Das spart wiederkehrende Arbeitsschritte und eignet sich beispielsweise für automatisch erzeugte Auswertungen oder Berichte.
Excel kann dafür den integrierten Senden-Dialog verwenden. Alternativ lässt sich eine E-Mail über Outlook gezielt per VBA erstellen. Welche Variante sinnvoller ist, hängt davon ab, wie automatisiert der Versand ablaufen soll.
Content-Partnerschaft
Dieser Artikel entstand in einer Content-Partnerschaft mit Computerwissen.de
Das Wichtigste in Kürze
- Mit ActiveSheet.Copy lässt sich das aktuelle Tabellenblatt in eine neue Arbeitsmappe kopieren.
- Der integrierte Excel-Dialog xlDialogSendMail kann anschließend für den Mailversand verwendet werden.
- Das Makro verschickt die E-Mail nicht zwangsläufig automatisch: Beim integrierten Dialog wird zunächst eine Nachricht zur Prüfung beziehungsweise zum Versand geöffnet.
- Für stärker automatisierte Abläufe kann VBA direkt ein Outlook-Mailobjekt erstellen.
- Das Makro sollte nur mit Dateien ausgeführt werden, deren Inhalt tatsächlich per E-Mail weitergegeben werden darf.
Aktives Tabellenblatt per VBA als Mail verschicken
Das Grundprinzip ist einfach: Zunächst kopiert Excel das aktive Tabellenblatt in eine neue Arbeitsmappe. Wird Copy ohne Angaben für Before oder After verwendet, erstellt Excel dabei eine neue Arbeitsmappe, die das kopierte Tabellenblatt enthält.
Anschließend kann der integrierte Excel-Dialog zum Versenden aufgerufen werden:
Sub TabellenblattVerschicken()
ActiveSheet.Copy
Application.Dialogs(xlDialogSendMail).Show _ „[email protected]“, „Betreff“
End Sub
Ersetzen Sie [email protected] durch die gewünschte E-Mail-Adresse und Betreff durch den gewünschten Betreff der Nachricht.
Microsoft dokumentiert xlDialogSendMail weiterhin als integrierten Excel-Dialog. Über Application.Dialogs(...).Show lässt sich dieser Dialog aus VBA heraus aufrufen.
Wer Excel regelmäßig für Auswertungen, Berichte oder automatisierte Arbeitsabläufe nutzt, kann mit passenden Vorlagen und zusätzlichen Funktionen viele wiederkehrende Arbeitsschritte vereinfachen. Eine mögliche Ergänzung ist das „Excel-Starterpaket“, das thematisch direkt zur Arbeit mit Excel passt.
Was passiert beim Start des Makros?
Beim Ausführen von ActiveSheet.Copy wird das aktuell ausgewählte Tabellenblatt in eine neue Arbeitsmappe kopiert. Die neue Arbeitsmappe enthält zunächst nur dieses Tabellenblatt.
Anschließend öffnet xlDialogSendMail den von Excel vorgesehenen Sendedialog. Dort können Sie die Nachricht kontrollieren und den Versand auslösen.
Das hat einen wichtigen Vorteil: Das Makro kann den Benutzer in den Versandprozess einbeziehen, anstatt eine E-Mail ohne weitere Kontrolle abzuschicken.
So fügen Sie das Makro in Excel ein
Um das VBA-Makro anzulegen, gehen Sie folgendermaßen vor:
- Öffnen Sie die Excel-Arbeitsmappe mit dem Tabellenblatt, das Sie verschicken möchten.
- Drücken Sie Alt + F11, um den VBA-Editor zu öffnen.
- Wählen Sie Einfügen > Modul.
- Fügen Sie den oben gezeigten VBA-Code in das neue Modul ein.
- Wechseln Sie zurück zu Excel.
- Drücken Sie Alt + F8.
- Wählen Sie TabellenblattVerschicken aus.
- Starten Sie das Makro.
Achten Sie darauf, dass vor dem Start das Tabellenblatt aktiviert ist, das verschickt werden soll. ActiveSheet bezeichnet immer das aktuell aktive Tabellenblatt.
Warum ActiveSheet.Copy verwendet wird
Der entscheidende Befehl lautet:
ActiveSheet.Copy
Ohne weitere Parameter kopiert Excel das Tabellenblatt in eine neue Arbeitsmappe. Dadurch wird nicht die komplette ursprüngliche Arbeitsmappe verschickt, sondern eine neue Arbeitsmappe mit dem ausgewählten Blatt.
Das ist beispielsweise praktisch, wenn eine Arbeitsmappe mehrere interne Tabellen enthält, von denen nur eine bestimmte Auswertung an einen Empfänger gehen soll.
Bei sensiblen Daten sollten Sie allerdings prüfen, ob das kopierte Blatt Formeln, Verknüpfungen oder andere Informationen enthält, die der Empfänger nicht erhalten soll.
Alternative: E-Mail gezielter über Outlook erstellen
Wenn der Versand stärker automatisiert werden soll, kann VBA auch direkt ein Outlook-Mailobjekt erstellen. Outlook stellt dafür das MailItem-Objekt zur Verfügung. Über dessen Eigenschaften lassen sich unter anderem Empfänger und Betreff festlegen; mit Display wird die Nachricht zunächst geöffnet.
Ein wesentlicher Unterschied besteht darin, dass Sie damit den Inhalt und Aufbau der Nachricht wesentlich genauer steuern können. Microsoft dokumentiert beispielsweise auch das Anhängen von Dateien an ein Outlook-Mailobjekt über Attachments.Add.
Für einfache Fälle reicht der integrierte Excel-Sendedialog jedoch aus. Wenn regelmäßig mehrere Empfänger, individuelle Nachrichtentexte oder zusätzliche Anhänge verarbeitet werden sollen, ist eine Outlook-Automatisierung meist flexibler.
Häufige Fehler beim Verschicken eines Tabellenblatts
Das falsche Tabellenblatt wird verschickt
Da das Makro ActiveSheet verwendet, muss vor dem Start das gewünschte Blatt aktiv sein. Soll immer ein bestimmtes Blatt verschickt werden, ist eine explizite Angabe robuster:
Worksheets(“Auswertung“).Copy
Die Worksheets-Auflistung kann ein Tabellenblatt beispielsweise über seinen Namen ansprechen.
Das Makro funktioniert nicht wie erwartet
Prüfen Sie zunächst, ob Makros in der verwendeten Excel-Datei ausgeführt werden dürfen und ob ein geeignetes E-Mail-Programm eingerichtet ist.
Das Tabellenblatt enthält vertrauliche Informationen
Beim Kopieren wird der komplette Inhalt des Tabellenblatts übernommen. Prüfen Sie deshalb vor dem Versand insbesondere ausgeblendete Inhalte, Formeln, Kommentare und Verknüpfungen.
FAQ: Tabellenblatt per VBA verschicken
Kann ich nur ein bestimmtes Tabellenblatt per E-Mail verschicken?
Ja. Mit Worksheets(“Auswertung“).Copy können Sie gezielt ein bestimmtes Tabellenblatt in eine neue Arbeitsmappe kopieren. Mit ActiveSheet.Copy wird dagegen das aktuell aktive Blatt verwendet.
Wird die komplette Excel-Datei verschickt?
Nein, bei ActiveSheet.Copy ohne weitere Parameter erstellt Excel eine neue Arbeitsmappe mit dem kopierten Tabellenblatt.
Verschickt das Makro die E-Mail automatisch?
Nicht bei der hier gezeigten Variante mit xlDialogSendMail. Der integrierte Sendedialog wird geöffnet, sodass der Benutzer den Versand kontrollieren kann.
Kann ich Empfänger und Betreff im Makro festlegen?
Ja. Die Argumente des Show-Aufrufs können unter anderem für Empfänger und Betreff verwendet werden. Microsoft zeigt diese Verwendung ebenfalls in der VBA-Dokumentation.
Kann ich die E-Mail auch vollständig über Outlook automatisieren?
Ja. VBA kann ein Outlook-MailItem erzeugen und dessen Eigenschaften wie Empfänger und Betreff setzen. Über Send kann ein Mailobjekt anschließend versendet werden.
Was muss ich beim Versand vertraulicher Excel-Daten beachten?
Prüfen Sie vor dem Versand genau, welche Daten das kopierte Tabellenblatt enthält. Besonders bei automatisch erzeugten Berichten sollten Sie sicherstellen, dass keine internen Informationen oder nicht für den Empfänger bestimmten Daten mitgeschickt werden.