Alle Excel-Dateien sollen ein Backup erstellen

Das Problem

Kopien älterer Dateien sind hilfreich, wenn der Rechner Daten verloren hat oder wenn man Änderungen noch einmal rückgängig machen möchte. Neben den 'Undo'-Funktionen bietet sich hier vor allem eine Sicherungskopie der letzten Dateiversion an. Diese Sicherungskopien werden bei jedem Speichern angelegt und enthalten den letzten gespeicherten Stand der Datei. Leider muss man dies in Excel für jede Datei und manuell einstellen, damit genau diese Datei automatisch eine Sicherungskopie erstellt. Das geht so:

  • Im Menü 'Datei' den Befehl 'Speichern unter ...' auswählen.

  • In der Menüleiste des 'Speichern unter'-Dialogs findet sich dann der Punkt 'Extras'.

  • Hier wählt man den Eintrag 'Allgemeine Optionen ...' aus.

  • Im Dialogfeld 'Speicheroptionen' klickt man auf 'Sicherungsdatei erstellen'.

Das Backup wird im gleichen Verzeichnis angelegt, wie die Excel-Datei.

Das Aktivieren der Backup-Option kann aber auch ein Benutzer oder Systemadministrator mit Hilfe des folgenden kleinen Skripts durchführen, welches alle Excel-Dateien automatisch überprüft und ggf. den Schreibschutz einstellt.
Das Skript kann automatisiert in einem Wartungsfenster ablaufen.

Bekannnte Probleme
  • Das Skript verwendet Excel, dieses muß also auf dem System installiert sein.

  • Tote Links führen zu einem Fehler, z.B. wenn sich im Ordner 'Dokumente' Verweise auf eine Datei befinden, die aber gelöscht wurde.

  • Excel kann eine beschädigte Datei nicht mehr öffnen.

  • Die Datei wurde mit einem Kennwort gegen Änderungen geschützt.

  • Auf der Festplatte befindet sich ein älteres Excel (Excel 95 und früher, da Excel 97 und Excel 2000 das gleiche Dateiformat haben), welches versucht, Tabellen einer neueren Version zu bearbeiten.

  • Eine Datei ist bereits geöffnet oder als schreibgeschützt markiert

  • Trotz intensiver Festplattentätigkeit scheint das Programm einige Sekunden inaktiv zu sein. Dies ist allerdings die Phase, in der es das Dateisystem nach .xls und .xlt-Dateien durchsucht und daher normal.

Das Script ‘SicherungskopieExcel.vbs’
        Set Excel = CreateObject("Excel.Application")
        Set Suche = Excel.FileSearch

        ' Keine Meldungen ausgeben
        Excel.DisplayAlerts = False
        Excel.ScreenUpdating = False

        On Error Resume Next

        For Each LaufWerk In CreateObject("Scripting.FileSystemObject").Drives

            If LaufWerk.DriveType = 2 Then

                For Each DateiTyp In Array("xls", "xlt")

                    ' Nach Excel-Dateien suchen
                    With Suche
                        .LookIn = LaufWerk.DriveLetter & ":\*."
                        .Filename = DateiTyp
                        .SearchSubFolders = True
                        .Execute
                    End With

                    For Each Datei In Suche.FoundFiles
                        With Excel.Workbooks.Open(Datei, 0)
                            If Not .CreateBackup Then
                                .SaveAs Datei, , , , , True
                                .Close
                            End If
                        End With
                    Next

                Next
            End If
        Next
        Set Excel = Nothing
Anpassungen

Das Script enthält die Zeile
For Each DateiTyp In Array("xls", "xlt")
Diese Zeile legt fest, dass alle Dateien vom Typ xls und xlt bearbeitet werden. Es können an diese Liste beliebig weitere Excel-Dateitypen angehängt werden.