Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Beim Speichern Sicherungskopie erstellen?

Forumthread: Beim Speichern Sicherungskopie erstellen?

Beim Speichern Sicherungskopie erstellen?
08.10.2008 10:49:00
Larsinator
Hallo zusammen,
ich möchte wenn ich eine Datei speichere gleichzeitig eine Sicherungskopie erstellen.
Dabei bin ich unterwegs bei dem Ereignis "Workbooks_BeforeSave".
Filecopy hat an der Stelle aber nicht funktioniert.
Im Moment teste ich gerade mit...

ThisWorkbook.SaveAs Filename:=FileDestination
ThisWorkbook.SaveAs Filename:=FileSource


Aber irgendwie hat es mir da gerade das Excel zerschossen. Kann es sein, dass ich da auf eine Endlosschleife stosse?
Hat da vielleicht jemand den elegantesten Weg? Ein funktionierender tuts aber auch... ;o)
Danke schon mal

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Beim Speichern Sicherungskopie erstellen?
08.10.2008 11:11:36
Matthias
Hallo Lars,
versuch's mal mit .SaveCopyAs.
Kann allerdings auch Probleme verursachen, wenn du die Sicherungskopie speicherst (dann die hat ja den selben Code, also wird eine Sicherungskopie der Sicherungskopie erstellt).
Außerdem wird gleich abgespeichert, weil die "BeforeSave"-Prozedur greift, bevor z.B. eine "Überschreiben?"-Meldung kommt und man das eigentliche Speichern abbrechen kann. Die Kopie wird vorher trotzdem gespeichert.
Ich bräuchte mehr Infos (Speicherort, Möglichkeit, unter einem enderen Namen zu speichern), um dir konkret zu helfen.
Gruß Matthias
Anzeige
AW: Beim Speichern Sicherungskopie erstellen?
08.10.2008 12:49:53
Larsinator
Hallo Matthias,
gegen konkrete Hilfe will ich mich nicht wehren. ;-)) Unten meinen ganzen aktuellen Stand.
Ich hatte bis jetzt drei Ansätze ergoogelt und getestet, die ersten beiden sind auskommentiert...
Danke nochmal

Option Explicit
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim PathDestination As String, FileDestination As String, FileSource As String
Dim FileExist As Boolean, bln As Boolean, IsCopySaved As Boolean
FileSource = "D:\" & ActiveWorkbook.Name
PathDestination = "D:\test\"
FileDestination = PathDestination & "Kopie.xls"
If (FileDestination = "" Or FileSource = "") Then GoTo ENDE 'Datei wird trotzdem  _
gespeichert!
FileExist = Dir$(FileSource)  ""
If (FileExist = False) Then GoTo ENDE 'Datei wird trotzdem gespeichert!
FileExist = Dir$(PathDestination)  ""
If (FileExist = False) Then GoTo ENDE 'Datei wird trotzdem gespeichert!
''   Application.DisplayAlerts = False
'    If bln = False Then
'        Cancel = True
'        bln = True
'        ThisWorkbook.SaveAs Filename:=FileDestination
'        ThisWorkbook.Save
'        ThisWorkbook.Saved = True
'        bln = False
'    End If
''   Application.DisplayAlerts = True
'    FileCopy FileSource, FileDestination
ThisWorkbook.SaveAs Filename:=FileDestination
ThisWorkbook.SaveAs Filename:=FileSource
ENDE:
End Sub


Anzeige
AW: Beim Speichern Sicherungskopie erstellen?
08.10.2008 12:56:00
Matthias
Hallo Lars,
Nenne mal deine konkreten Vorstellungen, die lassen sich aus dem Code nicht ablesen ;-)
1. willst du die Sicherungskopie auch speichern, wenn man im Menü "Datei, Speichern unter..." wählt?
2. In welchen Ordner soll die Sicherungskopie gespeichert werden?
3. Wie soll der Dateiname der Kopie lauten, soll er sich aus dem ursprünglichen Dateinamen ableiten?
4. Was soll passieren, wenn die Sicherungskopie geöffnet und gespeichert wird (siehe meine erste Antwort)?
Gruß Matthias
Anzeige
AW: Beim Speichern Sicherungskopie erstellen?
08.10.2008 19:31:00
Larsînator
Hallo nochmal,
unten findest Du zunächst mal die konkreten Antworten auf Deine konkreten Fragen.
Prinzipiell soll folgendes passieren:
Wenn eine Datei gespeichert wird, soll eine Kopie an einem anderen Ort abgelegt werden, weil die Originaldatei nicht von jedem zugänglich ist. Die Kopie hat also nur Lesecharakter.
(im Fallbeispiel arbeite ich mit lokalen Platten, in der Praxis wird es sich aber um verschiedene Netzlaufwerke handeln, weshalb eine Verknüpfung nicht in Frage kommt)
Die Frage ist jetzt also wie ich das Save-Event in den Griff bekomme...
Vielen Dank
Larsînator
1. willst du die Sicherungskopie auch speichern, wenn man im Menü "Datei, Speichern unter..." wählt?
Das ist kein praxisrelevanter Fall (s. Beschreibung) und muss daher auch nicht berücksichtigt werden.
2. In welchen Ordner soll die Sicherungskopie gespeichert werden?
Der Pfad ist fix und im SourceCode exemplarisch belegt:
FileSource = "D:\" & ActiveWorkbook.Name
PathDestination = "D:\test\"
FileDestination = PathDestination & "Kopie.xls"

3. Wie soll der Dateiname der Kopie lauten, soll er sich aus dem ursprünglichen Dateinamen ableiten?
s.o.
4. Was soll passieren, wenn die Sicherungskopie geöffnet und gespeichert wird (siehe meine erste Antwort)?
Das stimmt, das könnte ich noch berücksichtigen, dass die Prozedur dann nicht abläuft - also abhängig von ActiveWorkbook.Name.
Anzeige
AW: Beim Speichern Sicherungskopie erstellen?
08.10.2008 11:14:00
David
Hallo Lars,
bin sicher kein VBA-Experte, aber ich vermute auch, das dies eine Endlos-Schleife auslöst, denn SaveAs ist ja wieder ein Save-Ereignis.
Vielleicht hilft es, wenn du vor dem SaveAs die
Application.EnableEvents auf False setzt
und danach wieder auf True.
Gruß
David
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Sicherungskopie beim Speichern in Excel erstellen


Schritt-für-Schritt-Anleitung

Um eine Sicherungskopie beim Speichern einer Excel-Datei zu erstellen, kannst du VBA (Visual Basic for Applications) verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne deine Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge im Projekt-Explorer ein neues Modul hinzu, indem du mit der rechten Maustaste auf "VBAProject (deinDateiname)" klickst und "Einfügen" > "Modul" auswählst.

  3. Kopiere und füge den folgenden Code in das Modul ein:

    Option Explicit
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
       Dim PathDestination As String, FileDestination As String, FileSource As String
       FileSource = ThisWorkbook.FullName
       PathDestination = "D:\test\"
       FileDestination = PathDestination & "Kopie_" & ThisWorkbook.Name
    
       ' Sicherstellen, dass der Zielpfad existiert
       If Dir(PathDestination, vbDirectory) = "" Then MkDir PathDestination
    
       ' Sicherungskopie erstellen
       Application.EnableEvents = False
       ThisWorkbook.SaveCopyAs Filename:=FileDestination
       Application.EnableEvents = True
    End Sub
  4. Passe den PathDestination an deinen gewünschten Speicherort an.

  5. Schließe den VBA-Editor und teste das Speichern.


Häufige Fehler und Lösungen

  • Endlosschleife beim Speichern: Wenn du SaveAs innerhalb des BeforeSave-Ereignisses verwendest, kann dies eine Endlosschleife auslösen. Verwende stattdessen SaveCopyAs, um eine Sicherheitskopie zu erstellen, ohne das Speichern der Originaldatei zu beeinflussen.

  • Datei wird nicht gespeichert: Stelle sicher, dass der spezifizierte Speicherort existiert. Du kannst den Code anpassen, um den Zielordner zu erstellen, falls er nicht vorhanden ist.

  • Sicherheitskopie nicht gefunden: Überprüfe den Dateipfad und den Namen, um sicherzustellen, dass die Sicherungskopie im richtigen Verzeichnis abgelegt wird.


Alternative Methoden

Falls du keine VBA-Programmierung verwenden möchtest, kannst du auch die folgenden Methoden nutzen:

  1. Manuelles Erstellen einer Sicherungskopie: Speichere die Datei einfach unter einem anderen Namen oder an einem anderen Speicherort, wenn du die Datei speicherst.
  2. Excel-Optionen: Du kannst die AutoWiederherstellen-Funktion aktivieren, um automatisch Sicherungskopien in festgelegten Intervallen zu speichern. Dies findest du unter Datei > Optionen > Speichern.

Praktische Beispiele

  • Beispiel 1: Wenn du eine Excel-Datei mit dem Namen Projekt.xlsx speicherst, wird automatisch eine Sicherungskopie mit dem Namen Kopie_Projekt.xlsx im Ordner D:\test\ erstellt.

  • Beispiel 2: Du kannst auch den Dateinamen der Sicherungskopie dynamisch generieren, zum Beispiel durch Hinzufügen eines Zeitstempels:

    FileDestination = PathDestination & "Kopie_" & Format(Now, "YYYYMMDD_HHMMSS") & "_" & ThisWorkbook.Name

Tipps für Profis

  • Sicherungskopie ausschalten: Wenn du die Funktion zur Erstellung einer Sicherungskopie deaktivieren möchtest, kannst du Application.EnableEvents = False setzen, bevor du die Hauptdatei speicherst.

  • Regelmäßige Sicherungskopien: Überlege, ob du in kritischen Projekten regelmäßig Sicherungskopien erstellen möchtest, um Datenverluste zu vermeiden.

  • Verwendung von Netzlaufwerken: Berücksichtige bei der Arbeit mit Netzlaufwerken die Zugriffsrechte und stelle sicher, dass der Speicherort für alle Benutzer zugänglich ist.


FAQ: Häufige Fragen

1. Wie kann ich die Sicherungskopie beim Speichern ausschalten?
Du kannst die Funktion deaktivieren, indem du den entsprechenden VBA-Code kommentierst oder entfernst.

2. Wo wird die Sicherungskopie gespeichert?
Die Sicherungskopie wird im definierten Speicherort (PathDestination) gespeichert, den du im VBA-Code festlegst.

3. Was passiert, wenn ich die Sicherungskopie öffne und speichere?
Das ursprüngliche Speichern der Hauptdatei wird nicht beeinflusst. Du kannst den Code anpassen, um dieses Verhalten zu steuern.

4. Funktioniert das auch in Excel Online?
Die oben beschriebene Methode funktioniert nur in Desktop-Versionen von Excel, die VBA unterstützen. Excel Online hat diese Funktion nicht.

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