Einfaches Backup für Word-Dokumente
Word – SaveDuplicateWithTimeCode
Worum geht es?
Beim Arbeiten an wichtigen Dokumenten lege ich ständig neue Versionen an um nach eventuellen menschlichen oder Computer-basierten Fehlern möglichst wenig Arbeit einzubüßen. Dadurch ändert sich ständig der Dateiname. Um Abhilfe zu schaffen habe ich dieses Makro geschrieben. Auf Knopfdruck wird mit aktuellem Datum und aktueller Zeit eine Kopie gespeichert und man arbeitet in der eigentlichen Version weiter.
ACHTUNG: Damit ist man noch nicht vor versehentlichem Löschen, bzw. Virus-Befall geschützt. Also weiterhin ab und zu auf ein Read-Only Medium kopieren…
Installation
Alt+F11 öffnet den VBA-Editor. Den Code in das „ThisDocument“ der Normal.dot kopieren.
Zurück im Word im Menü „Extras“ „Anpassen“ wählen. Hier unter „Befehle“ Makros suchen und im rechten Fenster „Normal.ThisDocument.SaveDuplicateWithTimeCode“ in die Symbolleiste neben den Original-Speicherknopf ziehen. Mit rechtem Maus-Button auf diesem Symbol „Standard“ auswählen und ein Symbol aussuchen.
Anwendung
Einfach auf den neuen Button klicken. Es wird ein Duplikat gespeichert, danach wird auch das Ursprungsdokument unter dem eigentlichen Namen noch einmal gespeichert. Beim ersten Start wird nach dem Dokumenten-Name gefragt, und ob die Duplikate in einem eigenen Unterordner gespeichert werden sollen.
Kompatibilität
Getestet mit Word 2003 und Word 2007.
Code
Option Explicit '© Karsten Hartlieb 2010 Sub SaveDuplicateWithTimeCode() Dim tmpString As String, BaseName As String, BasePath As String, PathName As String, jetzt As Date, newName As String Dim extension As String On Error Resume Next BaseName = ActiveDocument.CustomDocumentProperties("Speichername").Value PathName = ActiveDocument.CustomDocumentProperties("Speicherpfad").Value BasePath = ActiveDocument.Path If Len(BaseName) = 0 Then If MsgBox("Soll der aktuelle Name (" & ActiveDocument.Name & ") verwendet werden?", vbOKCancel, "Speichername noch nicht gesetzt...") = vbOK Then ActiveDocument.CustomDocumentProperties.Add Name:="Speichername", LinkToContent:=False, Type:=msoPropertyTypeString, Value:=ActiveDocument.Name BaseName = ActiveDocument.Name Else tmpString = InputBox("Bitte den zu verwendenden Namen eingeben", "Dateiname") If Len(tmpString) = 0 Then MsgBox "Kein Name angegeben, Skript wird abgebrochen" Exit Sub Else ActiveDocument.CustomDocumentProperties.Add Name:="Speichername", LinkToContent:=False, Type:=msoPropertyTypeString, Value:=tmpString BaseName = tmpString End If End If End If If Len(PathName) = 0 Then If MsgBox("Sollen die Sicherungen in einem eigenen Ordner landen?", vbOKCancel, "Speichername noch nicht gesetzt...") = vbCancel Then ActiveDocument.CustomDocumentProperties.Add Name:="Speicherpfad", LinkToContent:=False, Type:=msoPropertyTypeString, Value:="NoDedicPath" PathName = "" Else tmpString = InputBox("Bitte den zu verwendenden Orndernamen eingeben", "Ordnername") If Len(tmpString) = 0 Then MsgBox "Kein Name angegeben, Skript wird abgebrochen" Exit Sub Else ActiveDocument.CustomDocumentProperties.Add Name:="Speicherpfad", LinkToContent:=False, Type:=msoPropertyTypeString, Value:=tmpString BaseName = tmpString End If End If Else If PathName = "NoDedicPath" Then PathName = "" End If End If If Len(PathName) > 0 Then tmpString = BasePath & "" & PathName If Right(Trim(tmpString), 1) <> "" Then tmpString = tmpString & "" End If If Not (Dir(tmpString, vbDirectory) <> "") Then MkDir tmpString End If End If jetzt = Now() newName = Year(jetzt) & "-" & Format(Month(jetzt), "00") & "-" & Format(Day(jetzt), "00") newName = newName & " " & Format(Hour(jetzt), "00") & "_" & Format(Minute(jetzt), "00") newName = newName & " " & BaseName '& extension If Len(PathName) > 0 Then ChangeFileOpenDirectory BasePath & "" & PathName End If ActiveDocument.SaveAs fileName:=newName End Sub
Hinterlasse einen Kommentar
An der Diskussion beteiligen?Hinterlasse uns deinen Kommentar!