Anzeige
Archiv - Navigation
1724to1728
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Sicherungskopie *.xlsb speichert Datei ohne Makros

Sicherungskopie *.xlsb speichert Datei ohne Makros
04.12.2019 09:41:53
haze
Moin zusammen,
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

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sicherungskopie *.xlsb speichert Datei ohne Makros
05.12.2019 16:17:36
fcs
Hallo haze,
du sicherst ja nur ein Tabellenblatt in der Sicherungskopie.
Dabei werden dann alle Makros, die in allgemeinen Modulen angelegt sind, und Userformen nicht in die Sicherungskopie übernommen.
Für Sicherheitskopien verwendet man den Befehl SaveCopyAs.
Hier wird die Datei im gleichen Format gespeichert wie das Original - Darauf muss man ggf. bei der Vergabe des Dateinamens der Kopie achten.
Deine beiden Makros müssten dann etwa wie fogt aussehen.
LG
Franz
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
.SaveCopyAs Filename:=Pfad & Dname
'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
Me.SaveCopyAs Filename:=Pfad & Dname
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

Anzeige
AW: Sicherungskopie *.xlsb speichert Datei ohne Makros
06.12.2019 09:10:02
haze
Hi Franz,
super, vielen Dank - funktioniert tadellos!
Danke und beste Grüße
haze

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige