Tutorial: Jedes Tabellenblatt als separate Arbeitsmappe speichern (Excel VBA)
Dieses Tutorial zeigt dir, wie du mit einem einfachen Excel-VBA-Makro jedes Tabellenblatt deiner aktuellen Datei automatisch als eigene, separate Excel-Datei (.xlsx) speicherst.
Wenn du eine große Excel-Datei mit vielen Reitern hast (z. B. für verschiedene Abteilungen oder Monate) und diese einzeln verschicken musst, ist dieses Makro ein echter Zeitsparer.
Schritt 1: Vorbereitung
Bevor wir den Code einfügen, stelle sicher, dass:
- Deine Datei als Excel-Arbeitsmappe mit Makros (.xlsm) gespeichert ist.
- Die Registerkarte Entwicklertools im Menüband sichtbar ist. (Falls nicht: Rechtsklick auf das Menüband > Menüband anpassen > Haken bei Entwicklertools setzen).
Schritt 2: Den VBA-Editor öffnen
- Drücke die Tastenkombination
ALT+F11, um den VBA-Editor zu öffnen. - Gehe im Menü auf Einfügen > Modul.
- Ein leeres weißes Fenster erscheint. Kopiere den folgenden Code und füge ihn dort ein:
Sub TabellenblaetterAlsArbeitsmappeSpeichern()
Dim ws As Worksheet
Dim pfad As String
Dim dateiName As String
' Speicherpfad: Der gleiche Ordner, in dem diese Datei liegt
pfad = ThisWorkbook.Path & "\"
' Bildschirmaktualisierung ausschalten (beschleunigt den Vorgang)
Application.ScreenUpdating = False
Application.DisplayAlerts = False ' Verhindert Rückfragen beim Überschreiben
For Each ws In ThisWorkbook.Worksheets
' Sichtbare Blätter verarbeiten
If ws.Visible = xlSheetVisible Then
' Das Tabellenblatt in eine neue Arbeitsmappe kopieren
ws.Copy
' Name der neuen Datei festlegen (Pfad + Name des Blattes)
dateiName = pfad & ws.Name & ".xlsx"
' Die neue Arbeitsmappe speichern und schließen
With ActiveWorkbook
.SaveAs Filename:=dateiName, FileFormat:=xlOpenXMLWorkbook
.Close SaveChanges:=False
End With
End If
Next ws
' Einstellungen zurücksetzen
Application.ScreenUpdating = True
Application.DisplayAlerts = True
MsgBox "Fertig! Alle Blätter wurden im Ordner " & pfad & " gespeichert.", vbInformation, "Erfolg"
End Sub
Schritt 3: Das Makro ausführen
Es gibt zwei Möglichkeiten, das Makro zu starten:
- Direkt im Editor: Klicke mit dem Cursor irgendwo in den Code und drücke
F5. - In Excel:
- Schließe den VBA-Editor.
- Gehe zu Entwicklertools > Makros.
- Wähle
TabellenblaetterAlsArbeitsmappeSpeichernaus und klicke auf Ausführen.
Erläuterung des Codes: So funktioniert es
pfad = ThisWorkbook.Path & "\": Das Makro erkennt automatisch, wo deine aktuelle Datei gespeichert ist, und legt die neuen Dateien im selben Ordner ab.ws.Copy: Dies ist der wichtigste Befehl. Wenn manCopyohne Zielangabe auf ein Worksheet anwendet, erstellt Excel automatisch eine neue Arbeitsmappe, die nur dieses eine Blatt enthält.FileFormat:=xlOpenXMLWorkbook: Dies stellt sicher, dass die neuen Dateien im Standard-Excel-Format (.xlsx) gespeichert werden, auch wenn die Originaldatei Makros enthält.Application.DisplayAlerts = False: Falls eine Datei mit dem gleichen Namen bereits existiert, wird sie ohne Nachfrage überschrieben.
Optionale Anpassungen
Nur bestimmte Blätter ausschließen?
Wenn du ein Blatt namens "Menü" oder "Daten" hast, das nicht exportiert werden soll, ändere die For Each-Schleife wie folgt ab:
For Each ws In ThisWorkbook.Worksheets
If ws.Visible = xlSheetVisible And ws.Name <> "Menü" Then
' ... restlicher Code ...
End If
Next ws
Einen festen Speicherpfad wählen?
Möchtest du die Dateien nicht im selben Ordner, sondern z.B. auf dem Desktop speichern? Ändere die Zeile für den Pfad:
pfad = "C:\Users\DeinName\Desktop\MeinOrdner\"
Sicherheitshinweis
Da dieses Makro Dateien auf deiner Festplatte erstellt und ggf. überschreibt, solltest du vor der ersten Ausführung sicherstellen, dass deine Hauptdatei gespeichert ist. Viel Erfolg beim Automatisieren!