Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Maximal 5 Sicherungskopien

Maximal 5 Sicherungskopien
15.05.2016 14:58:31
Oisse
Hallo Zusammen,
folgenden Code verwende ich zum Erstellen einer Sicherungskopie, der auch einwandfrei funkioniert:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim SavePath As String
Dim FileName As String
Dim FileExtension As String
Dim FileDate As String
Dim FileBackupName As String
Dim FileUsername As String
SavePath = ThisWorkbook.Path & "\Backup\"
FileName = Left(ThisWorkbook.Name, InStrRev(ThisWorkbook.Name, ".") - 1)
FileExtension = Mid(ThisWorkbook.Name, InStrRev(ThisWorkbook.Name, ".") + 1)
FileUsername = Environ("UserName")
FileDate = Format(Now, "YYYYmmdd_hhmmss")
FileBackupName = SavePath & FileName & "_" & FileUsername & "_" & FileDate & "." &  _
FileExtension
ActiveWorkbook.SaveCopyAs FileBackupName
End Sub

Allerdings werden mir ja jetzt unzählige Backups erstellt, was nicht gut ist.
Kann man das auf eine bestimmte Anzahl begrenzen, sodass lediglich die letzten 5 Backups behalten werden und die vorherigen gelöscht werden? Wenn ja, bitte wie?
Gruß
Oisse

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Maximal 5 Sicherungskopien
15.05.2016 15:57:44
Daniel
Hi
ergänze den Code mal so:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim SavePath As String
Dim FileName As String
Dim FileExtension As String
Dim FileDate As String
Dim FileBackupName As String
Dim FileUsername As String
Dim Datei As String
Dim DatAlt As String
Dim DateiLösch As String
Dim x As Long
Dim Zähler As Long
SavePath = ThisWorkbook.Path & "\Backup\"
FileName = Left(ThisWorkbook.Name, InStrRev(ThisWorkbook.Name, ".") - 1)
FileExtension = Mid(ThisWorkbook.Name, InStrRev(ThisWorkbook.Name, ".") + 1)
FileUsername = Environ("UserName")
FileDate = Format(Now, "YYYYmmdd_hhmmss")
'--- letztes Backup löschen
x = Len(FileName & "_" & FileUsername & "_") + 1
DatAlt = "ZZZ"
Datei = Dir(SavePath & FileName & "_" & FileUsername & "_*." & FileExtension)
Do While Datei  ""
Zähler = Zähler + 1
If Mid(Datei, x)  4 And Datei  "" Then Kill SavePath & DateiLösch
FileBackupName = SavePath & FileName & "_" & FileUsername & "_" & FileDate & "." & _
FileExtension
ActiveWorkbook.SaveCopyAs FileBackupName
End Sub
der Code löscht immer das älteste Backup, so dass die Anzahl der Backups konstant bleibt.
allerdings wird nur das Backup gelöscht, wenn mindestens 5 vorhanden sind.
wenn schon mehr da sind und es genau 5 sein sollen, dann müsstest du die überzähligen einmalig von Hand löschen
ist jetzt nicht getestet.
Gruß Daniel

Anzeige
AW: Maximal 5 Sicherungskopien
15.05.2016 16:54:31
Oisse
Hallo Daniel,
ich bin, wie immer begeistert.
Vielen herzlichen Dank.
Gruß
Oisse
;
Anzeige
Anzeige

Infobox / Tutorial

Maximal 5 Sicherungskopien in Excel erstellen


Schritt-für-Schritt-Anleitung

Um sicherzustellen, dass Du maximal 5 Sicherungskopien in Excel behältst, kannst Du den folgenden VBA-Code in Deinem Excel-Arbeitsbuch verwenden. Dieser Code erstellt automatisch eine Sicherungskopie, löscht jedoch die älteste Kopie, wenn mehr als 5 Backups vorhanden sind.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeinWorkbookName)", wähle "Einfügen" und dann "Modul".
  3. Kopiere den folgenden Code in das Modul:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim SavePath As String
    Dim FileName As String
    Dim FileExtension As String
    Dim FileDate As String
    Dim FileBackupName As String
    Dim FileUsername As String
    Dim Datei As String
    Dim Zähler As Long
    Dim x As Long

    SavePath = ThisWorkbook.Path & "\Backup\"
    FileName = Left(ThisWorkbook.Name, InStrRev(ThisWorkbook.Name, ".") - 1)
    FileExtension = Mid(ThisWorkbook.Name, InStrRev(ThisWorkbook.Name, ".") + 1)
    FileUsername = Environ("UserName")
    FileDate = Format(Now, "YYYYmmdd_hhmmss")

    ' Backup erstellen
    Datei = Dir(SavePath & FileName & "_" & FileUsername & "_*." & FileExtension)
    Do While Datei <> ""
        Zähler = Zähler + 1
        Datei = Dir
    Loop

    If Zähler >= 5 Then
        ' Lösche das älteste Backup
        Dim ältestesBackup As String
        ältestesBackup = Dir(SavePath & FileName & "_" & FileUsername & "_*." & FileExtension)
        Kill SavePath & ältestesBackup
    End If

    FileBackupName = SavePath & FileName & "_" & FileUsername & "_" & FileDate & "." & FileExtension
    ActiveWorkbook.SaveCopyAs FileBackupName
End Sub
  1. Speichere Deine Änderungen und schließe den VBA-Editor.

  2. Teste den Code, indem Du das Arbeitsbuch speicherst. Du solltest nun maximal 5 Sicherungskopien im angegebenen Backup-Ordner sehen.


Häufige Fehler und Lösungen

  • Fehler: Der Backup-Ordner existiert nicht.

    • Lösung: Stelle sicher, dass der Ordner Backup im gleichen Verzeichnis wie Dein Arbeitsbuch existiert. Erstelle den Ordner manuell, falls er nicht vorhanden ist.
  • Fehler: Der Code löscht nicht das älteste Backup.

    • Lösung: Überprüfe, ob der Code korrekt in das Arbeitsbuch eingefügt wurde. Achte darauf, dass Du den gesamten Code aus dem obigen Beispiel kopiert hast.

Alternative Methoden

Wenn Du keine VBA-Lösungen verwenden möchtest, kannst Du auch manuell Backups erstellen, indem Du das Arbeitsbuch unter einem neuen Namen speicherst. Du könntest auch eine Batch-Datei verwenden, um alte Backups zu löschen, allerdings ist dies weniger automatisiert und erfordert mehr manuelle Eingriffe.


Praktische Beispiele

Nehmen wir an, Dein Arbeitsbuch heißt Projektplan.xlsx. Nach dem Ausführen des oben genannten Codes wird der Backup-Ordner folgende Dateien enthalten:

  • Projektplan_MaxMustermann_20231017_120000.xlsx
  • Projektplan_MaxMustermann_20231017_121500.xlsx
  • Projektplan_MaxMustermann_20231017_123000.xlsx
  • Projektplan_MaxMustermann_20231017_124500.xlsx
  • Projektplan_MaxMustermann_20231017_130000.xlsx

Wenn Du nun ein weiteres Mal speicherst und bereits 5 Backups vorhanden sind, wird das älteste Backup (z.B. Projektplan_MaxMustermann_20231017_120000.xlsx) gelöscht.


Tipps für Profis

  • Überlege, den Backup-Pfad dynamisch zu gestalten, sodass er auf einen Cloud-Speicher verweist. So hast Du immer Zugriff auf Deine Backups, egal wo Du bist.
  • Achte darauf, den Namen der Sicherungskopien so zu gestalten, dass sie leicht identifizierbar sind, z.B. durch Hinzufügen des Datums und Uhrzeit.

FAQ: Häufige Fragen

1. Kann ich die Anzahl der Backups ändern? Ja, Du kannst die Zahl im Code anpassen, indem Du die Bedingung If Zähler >= 5 Then auf die gewünschte Anzahl änderst.

2. Funktioniert dieser Code in Excel 2016? Ja, der Code ist mit Excel-Versionen ab 2010 kompatibel, also auch in Excel 2016.

3. Was passiert, wenn ich Excel schließe, ohne zu speichern? In diesem Fall wird kein Backup erstellt, da der Code nur vor dem Speichern ausgeführt wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige