Mit VBA eine neue Excel-Datei erstellen und Daten übergeben
Schritt-für-Schritt-Anleitung
Um mit Excel VBA eine neue Datei zu erstellen und Daten hinein zu kopieren, kannst Du den folgenden Schritten folgen:
-
Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.
-
Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (DeineDatei.xlsx)" > Einfügen > Modul.
-
Kopiere den folgenden Code in das Modul:
Sub Berechnung_Copy_and_Save()
' Einzelnes Berechnungs-Blatt in neue Datei kopieren
Dim varDatei
' Blatt mit Berechnung in neue Datei kopieren
ActiveWorkbook.Sheets("Tabelle1").Copy
' In Kopie in allen Blättern Formeln durch Werte ersetzen
With ActiveWorkbook.Worksheets(1)
.UsedRange.Copy
.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End With
Range("B1").Select
' Kopie speichern
With Application.FileDialog(msoFileDialogSaveAs)
.ButtonName = "Auswählen"
.Title = "Datei speichern - Bitte Dateiname eingeben/auswählen"
.InitialFileName = "Berechnung_neu.xlsx"
If .Show = -1 Then
varDatei = .SelectedItems(1)
ActiveWorkbook.SaveAs Filename:=varDatei, FileFormat:=51, addtomru:=True
ActiveWorkbook.Close savechanges:=False
End If
End With
End Sub
-
Führe das Makro aus: Drücke F5, während der Cursor im Code ist, um das Makro zu starten.
Häufige Fehler und Lösungen
Alternative Methoden
Wenn Du eine neue Excel-Datei erstellen und speichern möchtest, gibt es alternative Methoden, wie die Verwendung von Workbooks.Add:
Sub NeueDateiErstellen()
Dim wbk As Workbook
Set wbk = Workbooks.Add
' Weitere Anpassungen und Datenübertragungen hier
wbk.SaveAs Filename:="DeinDateiname.xlsx", FileFormat:=51
wbk.Close
End Sub
Diese Methode ist nützlich, wenn Du eine ganz neue Datei ohne Kopieren eines bestehenden Blattes erstellen möchtest.
Praktische Beispiele
Hier sind einige praktische Anwendungen von VBA, um eine neue Excel-Datei zu erstellen:
-
Daten von einem Blatt in ein neues Blatt kopieren:
Sub DatenKopieren()
Dim wbkNeu As Workbook
Set wbkNeu = Workbooks.Add
ThisWorkbook.Sheets("Daten").UsedRange.Copy wbkNeu.Sheets(1).Range("A1")
wbkNeu.SaveAs Filename:="DatenKopie.xlsx"
wbkNeu.Close
End Sub
-
Formeln in Werte umwandeln und in einer neuen Datei speichern:
Sub WerteSpeichern()
Dim varDatei As String
ActiveWorkbook.Sheets("Tabelle1").Copy
With ActiveWorkbook.Worksheets(1)
.UsedRange.Copy
.PasteSpecial Paste:=xlPasteValues
End With
varDatei = Application.GetSaveAsFilename("Berechnung_neu.xlsx", "Excel-Dateien (*.xlsx), *.xlsx")
If varDatei <> "False" Then
ActiveWorkbook.SaveAs Filename:=varDatei, FileFormat:=51
ActiveWorkbook.Close
End If
End Sub
Tipps für Profis
- Makros optimieren: Verwende
Application.ScreenUpdating = False, um die Bildschirmaktualisierung während des Makrolaufs zu deaktivieren und die Ausführungsgeschwindigkeit zu erhöhen.
- Blattschutz: Denke daran, den Blattschutz vor dem Kopieren von Daten aufzuheben, um mögliche Fehler zu vermeiden.
FAQ: Häufige Fragen
1. Wie kann ich ein VBA-Makro für verschiedene Excel-Versionen anpassen?
Um sicherzustellen, dass Dein Makro in verschiedenen Excel-Versionen funktioniert, verwende nur grundlegende Funktionen und teste es in den gewünschten Versionen.
2. Kann ich das Makro so anpassen, dass es mehrere Blätter kopiert?
Ja, Du kannst eine Schleife verwenden, um durch alle gewünschten Blätter zu iterieren und diese in die neue Datei zu kopieren.
3. Wo finde ich die gespeicherte Datei?
Die Datei wird im angegebenen Verzeichnis gespeichert, das Du im Dialogfeld auswählst. Achte darauf, den Speicherort im Dialogfeld zu überprüfen.