Ich habe eine Mappe mit zahlreichen Blättern. Gibt es eine Möglichkeit, sämtliche Blätter automatisch als eigene Mappen abzuspeichern, damit ich mir das händische anlegen und herumkopieren sparen kann?
Vielen Dank für Tips!
mfg
Michael Kößler
Sub Aufteilung()
Dim sh As Worksheet, ab As Workbook, nb As Workbook
Set ab = ActiveWorkbook
For Each sh In ab.Sheets
Set nb = Workbooks.Add
sh.Copy Before:=nb.Sheets(1)
nb.SaveAs ab.Path & "\" & sh.Name
Next sh
End Sub
Sub SaveSheets()
Dim iSheet As Integer
Dim sPath As String
Application.ScreenUpdating = False
sPath = Range("B1").Value & "\"
For iSheet = Worksheets.Count - 2 To Worksheets.Count
Worksheets(iSheet).Copy
ActiveWorkbook.SaveAs sPath & ActiveSheet.Name
ActiveWorkbook.Close savechanges:=False
Next iSheet
Application.ScreenUpdating = True
MsgBox "Job erledigt"
End Sub
Um Excel Tabellenblätter in einzelne Dateien zu speichern, kannst du die folgende VBA-Makro-Option verwenden. Dieses Skript erstellt für jedes Blatt in deiner Arbeitsmappe eine neue Datei:
ALT + F11, um den VBA-Editor zu öffnen.Einfügen > Modul, um ein neues Modul zu erstellen.Sub Aufteilung()
Dim sh As Worksheet, ab As Workbook, nb As Workbook
Set ab = ActiveWorkbook
For Each sh In ab.Sheets
Set nb = Workbooks.Add
sh.Copy Before:=nb.Sheets(1)
nb.SaveAs ab.Path & "\" & sh.Name
Next sh
End Sub
ALT + F8, wähle Aufteilung und klicke auf Ausführen.Das Skript speichert jedes einzelne Tabellenblatt als separate Datei im gleichen Verzeichnis wie die ursprüngliche Arbeitsmappe.
Fehler: "Das Arbeitsblatt kann nicht kopiert werden."
Fehler: Datei wird nicht gespeichert.
Eine andere Möglichkeit, einzelne Blätter aus Excel zu speichern, ist die Verwendung eines alternativen VBA-Skripts, das den Speicherort aus einer Zelle liest:
Sub SaveSheets()
Dim iSheet As Integer
Dim sPath As String
Application.ScreenUpdating = False
sPath = Range("B1").Value & "\"
For iSheet = 1 To Worksheets.Count
Worksheets(iSheet).Copy
ActiveWorkbook.SaveAs sPath & ActiveSheet.Name
ActiveWorkbook.Close savechanges:=False
Next iSheet
Application.ScreenUpdating = True
MsgBox "Job erledigt"
End Sub
In diesem Skript gibst du den Speicherort in Zelle B1 an, bevor du das Makro ausführst.
Angenommen, du hast eine Arbeitsmappe mit drei Tabellenblättern: "Januar", "Februar" und "März". Mit den oben genannten Makros kannst du jedes dieser Blätter als einzelne Datei speichern. Nach der Ausführung des Makros findest du die Dateien im gleichen Ordner wie die ursprüngliche Excel-Datei:
1. Wie kann ich ein einzelnes Blatt als eigene Datei speichern? Um ein einzelnes Tabellenblatt zu speichern, kannst du das oben genannte Makro anpassen, sodass es nur das gewünschte Blatt kopiert und speichert.
2. Ist es möglich, alle Blätter in ein bestimmtes Format zu speichern?
Ja, du kannst das Format in der SaveAs-Methode anpassen, z. B. nb.SaveAs ab.Path & "\" & sh.Name, FileFormat:=xlCSV für CSV-Dateien.
3. Funktioniert das auch in Excel Online oder in Mac-Versionen? Die VBA-Makros funktionieren nur in der Desktop-Version von Excel. Excel Online unterstützt keine VBA.