Automatisches Erstellen von Sicherheitskopien mit SaveCopyAs in Excel VBA
Schritt-für-Schritt-Anleitung
Um eine Sicherheitskopie Deiner Excel-Datei beim Schließen automatisch zu erstellen, kannst Du den folgenden VBA-Code verwenden. Dieser Code sollte in das Workbook-Modul Deiner Excel-Datei eingefügt werden.
- Öffne Deine Excel-Datei und drücke
ALT + F11, um den VBA-Editor zu öffnen.
- Suche im Projektfenster nach Deiner Arbeitsmappe und klicke mit der rechten Maustaste darauf.
- Wähle
Einfügen > Modul, um ein neues Modul zu erstellen.
- Füge den folgenden Code in das
ThisWorkbook-Modul ein:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim filePath As String
filePath = "C:\Users\xxxxxxxx\Desktop\xxxxxxxx\000_Archiv\" & _
"Mappe1 - " & Format(Now, "yyyy.mm.dd hh-mm") & _
" (" & Application.UserName & ").xlsm"
Me.SaveCopyAs filePath
End Sub
- Achte darauf, den Pfad in
filePath entsprechend anzupassen.
Häufige Fehler und Lösungen
-
Laufzeitfehler 1004: Datei kann nicht gefunden werden
Dieser Fehler tritt häufig auf, wenn der angegebene Pfad nicht existiert. Überprüfe, ob der Ordner 000_Archiv tatsächlich vorhanden ist und der Pfad korrekt angegeben wurde.
-
Ungültige Zeichen im Dateinamen
Achte darauf, dass im Dateinamen keine ungültigen Zeichen wie Doppelpunkte (:) verwendet werden. Ersetze sie durch gültige Zeichen, wie z.B. Bindestriche (-).
Alternative Methoden
Falls Du Schwierigkeiten mit SaveCopyAs hast, kannst Du auch die Methode SaveAs verwenden. Beachte jedoch, dass SaveAs den aktuellen Arbeitsbuchinhalt überschreibt, während SaveCopyAs eine Kopie erstellt.
Beispiel für SaveAs:
ActiveWorkbook.SaveAs Filename:="C:\Users\...\Dateiname.xlsx", FileFormat:=xlOpenXMLWorkbook
Praktische Beispiele
Hier sind einige Beispiele, wie Du SaveCopyAs in verschiedenen Szenarien verwenden kannst:
-
Sicherheitskopie in einem anderen Format:
ThisWorkbook.SaveCopyAs "C:\Backup\MeineMappe.xlsb" ' Speichert als Binary Workbook
-
Sicherheitskopie mit Zeitstempel:
Me.SaveCopyAs "C:\Backup\Mappe_" & Format(Now, "yyyymmdd_hhmm") & ".xlsm"
Tipps für Profis
-
Verwende ThisWorkbook anstelle von ActiveWorkbook, um sicherzustellen, dass Du immer die aktuelle Arbeitsmappe speicherst, unabhängig davon, welche Arbeitsmappe aktiv ist.
-
Testen des Codes: Teste Deinen Code in einer sicheren Umgebung, bevor Du ihn in produktiven Dateien anwendest.
-
Ereignisprozeduren: Du kannst auch andere Ereignisse wie Workbook_Open oder Workbook_Close verwenden, um zusätzliche Automatisierungen zu implementieren.
FAQ: Häufige Fragen
1. Was ist der Unterschied zwischen SaveCopyAs und SaveAs?
SaveCopyAs erstellt eine Kopie der Arbeitsmappe, ohne die aktuelle Datei zu schließen oder zu überschreiben, während SaveAs die aktuelle Arbeitsmappe speichert und ggf. den Dateinamen ändert.
2. Kann ich SaveCopyAs für andere Dateiformate verwenden?
Ja, SaveCopyAs kann verwendet werden, um Dateien in verschiedenen Formaten zu speichern, solange die Endung im Dateinamen korrekt angegeben wird (z.B. .xlsm, .xlsx).
3. Wie kann ich den Speicherort für die Sicherung ändern?
Du kannst den filePath im Code anpassen, um einen anderen Speicherort für die Sicherheitskopie anzugeben.