Tutorial: Jedes Tabellenblatt als separate Arbeitsmappe speichern (Excel VBA)

Melden

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:

  1. Deine Datei als Excel-Arbeitsmappe mit Makros (.xlsm) gespeichert ist.
  2. 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

  1. Drücke die Tastenkombination ALT + F11, um den VBA-Editor zu öffnen.
  2. Gehe im Menü auf Einfügen > Modul.
  3. 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:

  1. Direkt im Editor: Klicke mit dem Cursor irgendwo in den Code und drücke F5.
  2. In Excel:
    • Schließe den VBA-Editor.
    • Gehe zu Entwicklertools > Makros.
    • Wähle TabellenblaetterAlsArbeitsmappeSpeichern aus 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 man Copy ohne 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!

0