Kopieren/Spiegeln

Hallo,

ich habe eine Exceldatei mit vielen Verknüpfungen und Links generiert.
Da auch andere Kollegen in dieser Datei ihre Werte eintragen, möchte ich eine automatische Sicherung generieren.

Und zwar sollte eine Kopie (täglich) mit Datumsendung in ein anderes Verzeichnis eingefügt werden.
Ich stelle es mir so vor:

C:\Alle\Werte\Originaldatei.xls

kopie/Spiegel in

D:\Auswertung\ Originaldatei_01.03.2010.xls

nächste Sicherung
D:\Auswertung\ Originaldatei_02.03.2010.xls

nächste Sicherung
D:\Auswertung\ Originaldatei_03.03.2010.xls

nächste Sicherung
D:\Auswertung\ Originaldatei_04.03.2010.xls

usw.

Diese soll täglich automatisch passieren.

Könnt ihr mir helfen?

Gruß
Andreas

täglich und automatisch geht mit reinen Boardmitteln von Excel nicht.
Dazu bräuchtest Du eher ein synchronisierungs bzw backup Programm.
Wenn Du es mittels Excel realisieren willst, dann müsstest Du dazu ein Makro scheiben. Dieses würde dann allerdings nicht nur auf Deinem Rechner, sondern auch auf dem der anderen Nutzer ausgeführt werden - und die könnten auf den lokalen Pfad nicht zugreifen.

Folglich ist es mit Excel nicht möglich das, so wie Du es willst zu tun und Du musst nach einer Formatsunabhängigen Dateisicherungssoftware suchen.

Grüße
Munich

Hallo, danke für die schnelle Antwort.

Kannst Du ein Backupprogramm (Freeware) empfehlen?

Gruß
Andreas

Hallo Andreas,


möchte ich eine automatische Sicherung generieren.

Und zwar sollte eine Kopie (täglich) mit Datumsendung in ein
anderes Verzeichnis eingefügt werden.
Ich stelle es mir so vor:

C:\Alle\Werte\Originaldatei.xls

kopie/Spiegel in

D:\Auswertung\ Originaldatei_01.03.2010.xls

Mein Vorschlag:
Beim Schliessen der Originaldatei wird jedesmal automatisch eine Kopie erstellt. Das kann mehrmals am Tag passieren, wobei dann eine ggf. schon vorhandene Kopie des Tages überschrieben wird.
Für das Datum im Dateinamen sollte dabei eine Schreibweise ohne Punkte gewählt werden, da mehr als 1 Punkt im Dateinamen bei manchen Funktion zu Problemen führen kann.

Das nachfolgende Makro muss im VBA-Editor unter „DieseArbeitsmappe“ der Datei eingefügt werden.

Die Alternative wäre per Windows-Aufgabenplaner/Taskscheduler irgendwann nach Feierabend mit Scriptanweisungsdatei eine Kopie zu erstellen. Dazu muss dann aber der Rechner angeschaltet bleiben.

Gruß
Franz

Private Sub Workbook\_BeforeClose(Cancel As Boolean)
 Dim sPfad As String
 sPfad = "D:\Auswertung" 'Verzeichnis für Tageskopien
 'Prüfung, ob Kopie
 If ThisWorkbook.Path = sPfad Then
 'keine Kopie einer Tageskopie erstellen
 Else
 'Tageskopie der Datei erstellen
 Application.StatusBar = "Tageskopie der Datei wird erstellt"
 With ThisWorkbook
 .SaveCopyAs Filename:=sPfad & "\" & Left(.Name, InStrRev(.Name, ".") - 1) \_
 & "\_" & Format(Date, "YYYY\_MM\_DD") \_
 & Right(.Name, Len(.Name) - InStrRev(.Name, ".") + 1)
 End With
 Application.StatusBar = False
 End If
End Sub

Und zwar sollte eine Kopie (täglich) mit Datumsendung in ein
anderes Verzeichnis eingefügt werden.

C:\Alle\Werte\Originaldatei.xls

kopie/Spiegel in

D:\Auswertung\ Originaldatei_01.03.2010.xls

Hallo Andreas,

nimm Notepad und erstelle eine Datei mit der Endung „.vbs“.
Inhalt:

Set fs = CreateObject(„Scripting.FileSystemObject“)
fs.CopyFile „c:\test\Beispiel1.xls“, „c:\Sicherung\Beispiel1“ & replace(Date,".","_") & „.xls“
Set fs = Nothing

Diese vbs läßt du dann zur gewünschten Zeit vom Taskplaner ausführen.

Gruß
Reinhard

Mein Vorschlag:
Beim Schliessen der Originaldatei wird jedesmal automatisch
eine Kopie erstellt. Das kann mehrmals am Tag passieren, wobei
dann eine ggf. schon vorhandene Kopie des Tages überschrieben
wird.

kleine Anmerkung zu dieser Vorgehensweise:
Irrtümlich gelöschte Daten gehen so auch in der sicherung schnell verloren.
Man könnte auf diese Art eine „Serverseitige“ Kopie anlegen - wenn dann jedoch mit timestamp und definitiv nicht so, dass sie die vorher gespeicherte Version ersetzt. Das würde nur vor Dateikorrosion schützen, was aber nur noch äusserst selten vorkommt…

jein.
Ich hab zur Spiegelung von Verzeichnissen vor ca 1-2 Jahren Unison verwendet.
Ob das aber auch backups mit datumsstempel anlegen kann weiss ich nicht.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

oh nice! :smile:
wusste ja garnicht, dass Du sowas kannst…

C:\Alle\Werte\Originaldatei.xls
kopie/Spiegel in
D:\Auswertung\ Originaldatei_01.03.2010.xls

fs.CopyFile „c:\test\Beispiel1.xls“, „c:\Sicherung\Beispiel1“
& replace(Date,".","_") & „.xls“

hier müssten allerdings die Pfade noch angepasst werden (nur weil Du vergessen hast das zu erwähnen :wink:)

Grüße
Munich

Hallo MunichFreak,

wenn du dir die Prozedur anschaust, dann findest du dort auch den TimeStamp oder hier besser DatumsStamp, da ja die Erstellung einer Kopie pro Tag gewünscht war.

In den Namen der Originaldatei wird beim Kopieren immer das aktuelle Datum eingefügt.

Für einen TimeStamp müsste dann nur Date durch Now ersetzt werden und „YYYY_MM_DD“ durch „YYYY_MM_DD hhmmss“.

Gruß
Franz

Hallo

täglich und automatisch geht mit reinen Boardmitteln von Excel nicht.

Da muß ich doch widersprechen. Im OriginalPost heißt es, daß viele User eine Datei (d.h. die gleiche) mit Werten füllen. Warum sollte sich diese Datei dann nicht auch selbst täglich sichern können?

Mit Excel-Bordmitteln könnte das so gehen: Der Workbook_BeforeClores-Event der Datei macht die tägliche Sicherungskopie (sogar mit einem Einzeiler).

Private Sub Workbook\_BeforeClose(Cancel As Boolean)
 ThisWorkbook.SaveAs Filename:=Format(Now(), "yyMMdd") & " " & ActiveWorkbook.Name
End Sub

Es spricht m.E. nichts dagegen, dies jedesmal ablaufen zu lassen, wenn die Datei geschlossen wird. Denn es wird einfach nur die alte Version des Tages überschrieben.
Dieser Code ist ungetestet, deshalb fehlt die Unterdrückung der Meldung, daß die Sicherungsdatei schon existiert.

HTH.

M.

nicht ausreichend gelesen

täglich und automatisch geht mit reinen Boardmitteln von Excel nicht.

Da muß ich doch widersprechen. Im OriginalPost heißt es, daß
viele User eine Datei (d.h. die gleiche) mit
Werten füllen. Warum sollte sich diese Datei dann nicht auch
selbst täglich sichern können?

weil der Code, den Du gepostet hast nur für einen Pfad funktioniert, der für alle erreichbar ist - das Backup wurde aber zu einem lokalem Pfad gewünscht. Darauf haben alle anderen User keinen Zugang bzw würden sich ihre Platten zumüllen ohne es zu merken…
Davon abgesehen würdest Du durch ein derartig gestricktes Makro einee anderen Fehlerquelle Tür und Tor öffnen:
Würde jemand die Datei im Gedanken daran schliessen, dass ja dann automatisch der Dialog „Datei geändert, willste speichern?“ kommt, so würde sich die Datei selbst an einem anderen Ort speichern und der Dialog erscheint garnicht erst. Die Änderungen gehen in einer lokalen „Sicherung“ verloren…
Zudem erfordert diese Möglichkeit dass die anderen Nutzer alle den Makros vertrauen und diese auch zulassen.

Grüße
Munich

Hallo MunichFreak,

hier hatte ich mir folgendes gedacht:

  • in allen Excel-Versionen, die ich kenne, funktioniert ein vom Menü aufgerufenes Speichern-Unter so:
    die aktive Datei wird unter einem neuen Namen gespeichert und die Datei mit dem neuen Namen wird zur aktiven Datei.* Das wollte ich mir zunutze machen, indem ich den Workbook_BeforeClores-Event verwende:
  • der Befehl an Excel lautet, die Datei zu schließen. Und das tut es auch: Excel legt zuverlässig die Sicherungskopie an und schließt sowohl diese als auch die Datendatei.
    Soweit so gut.

Was aber in meinem Post gefehlt hat, war das Zielverzeichnis. Damit hast Du vollkommen recht. Man muß also zwei Dinge noch programmieren:

  • das fixe Zielverzeichnis und
  • eine Abfrage, die verhindert, daß sich eine geöffnete Sicherungskopie erneut selbst repliziert.

Danke für den Hinweis

Gruß
Markus
__________
* Ich hab mal kräftig Daten verloren, weil ich einen Teil der Daten in mein Original und einen Teil in die vermeintliche Sicherheitskopie eingetippt hatte und dann die Sicherheitskopie löschte. Deshalb ist mir das so präsent.

Hallo Andreas,

versuch mal diesen Link
www.add-in-world.com/katalog/archiv-assistent/
dort ist unter den Add-Ins eine Archivierungslösung.

Gruß Wolfgang