Sheets in neues Workbook kopieren
Schritt-für-Schritt-Anleitung
Um aus einem bestehenden Excel-Workbook ein neues Workbook zu erstellen und spezifische Sheets zu kopieren, kannst Du folgendes VBA-Skript verwenden:
Sub Datei_neu()
Dim intAbfrageWert As Integer
Dim strDateiName As String
Dim strDateiOrig As String
Dim intAnzSheets As Integer
strDateiOrig = ActiveWorkbook.Name
intAbfrageWert = MsgBox(" Wollen Sie eine Datei in dem Pfad " & ActiveWorkbook.Path & " erstellen?", vbYesNo + vbQuestion, "Datei erstellen", "", 0)
If intAbfrageWert = 6 Then
strDateiName = InputBox("Geben Sie einen Dateinamen ein", "Dateiname")
Workbooks.Add
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & strDateiName, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
intAnzSheets = ActiveWorkbook.Worksheets.Count
Workbooks(strDateiName).Activate
Application.DisplayAlerts = False
For i = intAnzSheets To 2 Step -1
Workbooks(strDateiName).Worksheets(i).Delete
Next
Application.DisplayAlerts = True
Workbooks(strDateiOrig).Activate
intAnzSheets = ActiveWorkbook.Worksheets.Count
For i = intAnzSheets To 2 Step -1
Sheets(i).Copy After:=Workbooks(strDateiName).Sheets(1)
Next
ActiveWorkbook.Sheets(1).Delete ' Löscht das erste leere Sheet im neuen Workbook
' Spalten D:G entfernen
For i = 2 To intAnzSheets
ActiveWorkbook.Sheets(i).Activate
Columns("D:G").Select
Selection.Delete Shift:=xlToLeft
Next
Else
MsgBox "Vorgang abgebrochen"
Exit Sub
End If
End Sub
Mit diesem Skript kannst Du ein neues Workbook erstellen und die gewünschten Sheets kopieren. Achte darauf, dass das Workbook, aus dem Du kopierst, geöffnet ist.
Häufige Fehler und Lösungen
Fehler: "Vorgang abgebrochen" nach Bestätigung der MsgBox.
Lösung: Stelle sicher, dass Du im richtigen Workbook arbeitest und genügend Berechtigungen zum Erstellen eines neuen Workbooks hast.
Fehler: Das neue Workbook enthält mehr Sheets als gewünscht.
Lösung: Überprüfe die Schleife, die die Sheets löscht. Achte darauf, dass die Indizes korrekt sind und dass Du das erste Sheet nur dann löscht, wenn es leer ist.
Alternative Methoden
Eine alternative Methode, um mehrere Sheets zu kopieren, ist die Verwendung eines Arrays:
Sheets(Array("Sheet1", "Sheet2")).Copy After:=Workbooks(strDateiName).Sheets(1)
Dies ermöglicht Dir, gezielt bestimmte Sheets zu kopieren. Achte darauf, dass die Namen der Sheets im Array genau mit denen im Workbook übereinstimmen.
Praktische Beispiele
Hier ist ein einfaches Beispiel, um ein Workbook zu erstellen und nur die ersten drei Sheets zu kopieren:
Sub CopyFirstThreeSheets()
Dim newWorkbook As Workbook
Set newWorkbook = Workbooks.Add
ThisWorkbook.Sheets("Sheet1").Copy Before:=newWorkbook.Sheets(1)
ThisWorkbook.Sheets("Sheet2").Copy After:=newWorkbook.Sheets(1)
ThisWorkbook.Sheets("Sheet3").Copy After:=newWorkbook.Sheets(2)
End Sub
Mit diesem Code werden die ersten drei Sheets in das neue Workbook kopiert.
Tipps für Profis
- Verwende
Option Explicit
am Anfang Deines VBA-Codes, um sicherzustellen, dass alle Variablen deklariert sind.
- Nutze
Application.ScreenUpdating = False
, um das Flackern des Bildschirms zu vermeiden, während das Makro läuft.
- Wenn Du regelmäßig mit VBA arbeitest, erstelle eine Sammlung von nützlichen Makros, die Du häufig verwendest, um Zeit zu sparen.
FAQ: Häufige Fragen
1. Muss das Workbook geöffnet sein, um Sheets zu kopieren?
Ja, das Workbook, aus dem Du die Sheets kopierst, muss geöffnet sein, damit Du auf die Sheet-Attribute zugreifen kannst.
2. Wie lösche ich ein leeres Sheet im neuen Workbook?
Du kannst das erste Sheet mit ActiveWorkbook.Sheets(1).Delete
löschen, nachdem Du die gewünschten Sheets kopiert hast.
3. Kann ich die Spalten, die ich kopiere, anpassen?
Ja, Du kannst die Spalten, die Du kopieren möchtest, anpassen, indem Du den Code entsprechend änderst, z.B. Columns("A:C,H").Copy
.