zu Sicherungszwecken verwende ich ein Makro, dass automatisch Zwischenstände als Sicherungskopien anlegt (das Makro habe ich mir aus einem bereits vorherigen Post kopiert und entsprechend angepasst).
Die Kopien werden wie gewünscht zwar angelegt, jedoch ohne Makros, was etwas sinnfrei ist. Bei Google Suchen zu dem Thema stoße ich immer nur aus .xlsm Posts, die an der Stelle nicht greifen - schließlich möchte ich aus Performance Gründen .xlsb verwenden.
Anbei der Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Prüft vor dem Schließen dieser Mappe ob Änderungen vorliegen/gespeichert wurde
'Liegen Änderungen vor bzw. wurde noch nicht gespeichert, kann gewählt werden ob
'diese Mappe gespeichert wird - ja speichert Mappe + Sicherheitskopie, nein speichert
'weder diese Mappe noch Sicherheitskopie
'Wurde Mappe vor dem Schließen nicht verändert bzw. bereits gespeichert, dann wird keine
'Sicherheitskopie erstellt und Mappe einfach geschlossen.
Dim WbZ As Workbook
Dim Pfad$, Dname$, Info
' Sicherungsversion
Pfad = "####"
Dname = "Invoicing - " & Format(Now, "DD_MM_YYYY-HH.MM") & ".xlsb"
Application.ScreenUpdating = False
Application.DisplayAlerts = False
With Me
If Not .ReadOnly Then
Select Case .Saved
'Mappe wurde geändert aber NICHT gespeichert
'Abfrage ob die Original-Mappe überhaupt gespeichert werden soll
Case Is = False
Info = MsgBox("Die Mappe wurde noch nicht gespeichert." & vbLf & _
"Soll diese Mappe gespeichert werden?", vbYesNo, _
"Schließen und Speichern?")
'Wenn Mappe vor dem Schließen gespeichert wird,
'dann Sicherheitskopie
If Info = vbYes Then
.Save
.Sheets.Copy
Set WbZ = ActiveWorkbook
With WbZ
.SaveAs Filename:=Pfad & Dname, FileFormat:=xlExcel12, CreateBackup: _
_
=False
.Close True
End With
'Wenn Mappe vor dem SChließen NICHT gespeichert wird,
'dann KEINE Sicherheitskopie
Else
.Saved = True
.Close
End If
'Mappe wurde NICHT geändert oder bereits gespeichert
'Dann KEINE Sicherheitskopie
End Select
End If
End With
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Speichert eine Sicherheitskopie der Mappe (ohne Makros) bei jedem Speichern
'der Originalmappe, außer bei "Speichern unter..."
Dim WbZ As Workbook
Dim Pfad$, Dname$
'VersionsStand mit aktuellem Datum
' Sicherungsversion
Pfad = "####"
Dname = "Invoicing - " & Format(Now, "DD_MM_YYYY-HH.MM") & ".xlsb"
Application.ScreenUpdating = False
Application.DisplayAlerts = False
With Me
If Not .ReadOnly And SaveAsUI = False Then
.Sheets.Copy
Set WbZ = ActiveWorkbook
With WbZ
.SaveAs Filename:=Pfad & Dname, _
FileFormat:=xlExcel12, CreateBackup:=False
.Close True
End With
End If
End With
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
In dem Quellkommentar steht audrücklich drin 'Speichert eine Sicherheitskopie der Mappe (ohne Makros) bei jedem Speichern, was ich ja gerne ändern würde - nur wie?
Leider hat auch die offizielle Seite keine Infos bereitgestellt, ob ich ein Kommando vergessen habe: https://docs.microsoft.com/de-de/office/vba/api/excel.workbook.saveas
Bin an der Stelle mittlerweile etwas ratlos - es wäre super, wenn mir jemand einen Tipp geben könnte.
Danke euch wie immer für die Hilfe!
Beste Grüße
haze