Das Makro ermöglicht, die Orginalarbeitsmappe zu speichern und eine Sicherheitskopie in einem anderen Laufwerk bzw. Verzeichnis zu erstellen.
Achtung:
Das Makro durchläuft mehrere Schritte:
- Speichern und schließen der Orginalarbeitsmappe
- Speichern und öffnen der Sicherheitskopie. Hier ist der Knackpunkt. Stoppt das Makro hier, wird mit der Kopie anstatt dem Orginal gearbeitet
- Mit Hilfe des Call-Befehls wird die Orginalarbeitsmappe wieder geöffnet
- Die Sicherheitskopie wird geschlossen.
Code
Sub DateiDoppeltSpeichern() ' ' Das Makro ermöglicht es, die Orginalarbeitsmappe zu speichern und eine Sicherheitskopie in einem anderen Laufwerk bzw. Verzeichnis zu erstellen. ' ' ' legt eine Sicherheitskopie der Arbeitsmappe in einem anderen Verzeichnis an ' Die Variablen lw, lw2, pfad, pfad2 sind entsprechend zu ändern ' Der Name der Sicherheitskopie wird hier "Kopie = "Arbeitsmappe_" & s_Datum & "_" & Format(s_Zeit, "hhmm") & ".xlsm" " festgelegt und ist entsprechend zu ändern ' Dim strOrginal As String ' Bezeichnung der Orginaldatei Dim strKopie As String ' Bezeichnung der Kopie Dim str_Datum As String Dim str_Zeit As String Dim i As Integer Const lw = "e:" ' Laufwerk der Orginaldatei Const lw2 = "e:" ' Laufwerk der Sicherungskopie Const pfad = "E:\Sicherung" ' Pfad zur Orginaldatei Const Pfad2 = "E:\Sicherung\test" ' Pfad zur Kopie ' Will man die Dateibenennung mit Datum und Uhrzeit vornehmen, dann ist ein Zwischenschritt notwendig. Die Uhrzeit wird mit Doppelpunkten (:) ausgegeben. ' Diese Zeichen sind in der Dateibenennung aber nicht erlaubt. str_Datum = Date ' Orndet dem string das Datum zu str_Zeit = Time ' Orndet dem string das Zeit zu strOrginal = ActiveWorkbook.Name ' Name der Orginaldatei wird festgelegt strKopie = "Arbeitsmappe_" & str_Datum & "_" & Format(str_Zeit, "hhmm") & ".xlsm" ' Name der Sicherungskopie wird festgelegt. On Error GoTo fehler ' Orginaldatei wird gespeichert ChDrive lw ChDir pfad With ActiveWorkbook .SaveAs Filename:=strOrginal, FileFormat:=xlOpenXMLWorkbookMacroEnabled, Password:="", writerespassword:="", ReadOnlyRecommended:=False, CreateBackup:=False End With ' Sicherungsdatei wird gespeichert ChDrive lw2 ChDir Pfad2 'ActiveWorkbook.SaveAs "Test_Arbeitsmappe_" & s_Datum & "_" & Format(s_Zeit, "hhmm") & ".xlsm", ReadOnlyRecommended:=True With ActiveWorkbook .SaveAs Filename:=strKopie, FileFormat:=xlOpenXMLWorkbookMacroEnabled, Password:="", writerespassword:="", ReadOnlyRecommended:=False, CreateBackup:=True '.Close End With ' Achtung nachdem alle SIcherung erfolgreich erstellt wurden, ist die SICHERUNGSKOPIE geöffnet. Die ORGINALDATEI wurde geschlossen. ' Die Orginalarbeitsmappe wird geöffnet Call ArbeitsmappeÖffnen ' Schließt die Sicherungskopie, so dass nur die Orginalarbeitsmappe geöffnet bleibt Workbooks(strKopie).Close Exit Sub ' Dialog bei Fehlern während des Speicherns fehler: MsgBox "Laufwerk/Verzeichnis nicht gefunden!" & vbCr & "Das Speichern wurde abgebrochen" End Sub Private Sub ArbeitsmappeÖffnen() Const lw = "E:" Const pfad = "E:\Sicherung" Const datei = "20101124_Test.xlsm" ChDrive lw ChDir pfad On Error Resume Next Workbooks.Open datei End Sub
Achtung
DIe Sicherungsdatei wird in diesem Beispiel ebenfalls im XLSM-Format abgespeichert. Die Datei enthält also die gleichen Makros wie die Orginaldatei. U.U. ist es jedoch sinnvoll, dass die Kopie der Arbeitsmappe für die weitere Bearbeitung keine Makros enthält, da die Funktionen dort nicht gebraucht werden. Für diesen Fall muss die Arbeitsmappe in einem Excel-Format gespeichert werden, dass keine Makros unterstützt. Man greift also auf das Datei-Format XLSX zurück.
Für den Code bedeutet das lediglich eine kleine Änderung. Die sieht aus wie folgt:
... strKopie = "Test_Arbeitsmappe_" & str_Datum & "_" & Format(str_Zeit, "hhmm") & ".xlsx" ... .SaveAs Filename:=strKopie, FileFormat:=xlNormal, Password:="", writerespassword:="", ReadOnlyRecommended:=False, CreateBackup:=True ...
Alle Datei-Formate, die ab Excel 2007 unterstützt werden, können auf der Hilfe-Seite von Microsoft abgerufen werden ➡ office.microsoft.com.

ist absolut technik-begeistert und großer Fan von Linux und Open Source. Raspberry Pi Bastler der ersten Stunde und nach wie vor begeistert von dem kleinen Stück Hardware, auf dem er tolle Projekte umsetzt. Teilt hier seine Erfahrungen mit Nextcloud, Pi-hole, YubiKey und anderen spannenden IT-Themen. Nutzt Markdown und LaTeX zum Dokumentieren seiner Projekte und Gitea zum Versionieren. Sitzt vor einem riesen 49“ Monitor, nutzt Windows und MacOS zum Arbeiten, Linux auf seinen Servern und virtuellen Maschinen und hört dabei Spotify und MP3s und Radio-Streams über seinen RadioPi.
Trinkt gerne fairen Kaffee und freut sich deshalb sehr über jede Spende.
Vielen Dank!