EXCEL - Sicherungskopie via VBA
Geizhals » Forum » Programmierung » EXCEL - Sicherungskopie via VBA (6 Beiträge, 121 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
.
Re: EXCEL - Sicherungskopie via VBA
05.01.2006, 11:21:17
hier der Code, im Personal Workbook speichern und dann einen Knopf hinzufügen (so hab ichs gemacht):

Public Sub Speichern()
Dim strPath As String, strFile As String
Dim arrfiles As Variant
Dim intCounter As Integer, intMax As Integer, intCount As Integer, intTmp As Integer
Dim datMax As Date

strFile = Mid(ActiveWorkbook.Name, 1, Len(ActiveWorkbook.Name) - 4)
strPath = ActiveWorkbook.path & "\" & strFile & "_temp"
If Dir(strPath, vbDirectory) = "" Then
    MkDir (strPath)
End If
strPath = strPath & "\"

With Application.FileSearch
    .NewSearch
    .LookIn = strPath
    .FileName = "*" & strFile & "*.xls"
    .Execute msoSortByLastModified, msoSortOrderAscending
    If .FoundFiles.Count = 3 Then
        intTmp = Mid(.FoundFiles.Item(1), Len(.FoundFiles.Item(1)) - 5, 1)
        Kill (.FoundFiles.Item(1))
        Application.StatusBar = "Datei wird als " & strPath & strFile & intTmp & ".xls gespeichert"
        ActiveWorkbook.SaveCopyAs (strPath & strFile & intTmp & ".xls")
        Application.StatusBar = ""
    ElseIf .FoundFiles.Count = 0 Then
        Application.StatusBar = "Datei wird als " & strPath & strFile & 1 & ".xls gespeichert..."
        ActiveWorkbook.SaveCopyAs (strPath & strFile & 1 & ".xls")
        Application.StatusBar = ""
    Else
        intTmp = (Mid(.FoundFiles.Item(.FoundFiles.Count), Len(.FoundFiles.Item(.FoundFiles.Count)) - 4, 1)) + 1
        Application.StatusBar = "Datei wird als " & strPath & strFile & intTmp & ".xls gespeichert..."
        ActiveWorkbook.SaveCopyAs (strPath & strFile & intTmp & ".xls")
        Application.StatusBar = ""
    End If
    
End With
ActiveWorkbook.Save
End Sub

Ich habs noch so gemacht dass immer nur max. 3 Sicherungskopien aufgehoben werden.

mfg

Penguin
Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
...
Re(3): EXCEL - Sicherungskopie via VBA
05.01.2006, 15:02:40
Bitte schen:

Public Sub Speichern_test()
Dim strPath As String, strFile As String, strMin As String, strBackup As String
Dim intCounter As Integer, intMax As Integer
Dim datMax As Date
Dim fso As Object

intMax = 3 'maximale Anzahl an Backups
strBackup = "\backup" 'sub-Verzeichnis für Backups


datMax = Now 'Startwert für Überprüfung
ActiveWorkbook.Save 'Speichern
strFile = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4) 'Dateiname
strPath = ActiveWorkbook.Path & strBackup 'Backup-Pfad
If Dir(strPath, vbDirectory) = "" Then 'existiert backup-Pfad?
    MkDir (strPath) 'Nein -> erstellen'
    ActiveWorkbook.SaveCopyAs strPath & "\" & strFile & "_backup1.xls" 'zugleich backup speichern und fertig
Else
    strPath = strPath & "\" 'Pfad korrigieren
    For intCounter = 1 To intMax 'anzahl an Backups durchlaufen
        If Dir(strPath & strFile & "_backup" & intCounter & ".xls") <> "" Then 'Prüfen obs schon existiert
            Set fso = CreateObject("Scripting.Filesystemobject") 'Zeiger erzeugen
            If fso.GetFile(strPath & strFile & "_backup" & intCounter & ".xls").DateLastModified < datMax Then 'Datei-Modified Datum auslesen und kleinstes suchen
                datMax = fso.GetFile(strPath & strFile & "_backup" & intCounter & ".xls").DateLastModified
                strMin = strPath & strFile & "_backup" & intCounter & ".xls"
            End If
            Set fso = Nothing
        Else
            ActiveWorkbook.SaveCopyAs strPath & strFile & "_backup" & intCounter & ".xls" 'noch nicht maximale Anzahl an Backups, dann eine erzeugen
            Exit Sub
        End If
    Next intCounter
    'Kill strMin 'alte löschen braucht man nicht wirklich
    ActiveWorkbook.SaveCopyAs strMin 'Backup speichern
End If
End Sub

mfg

Penguin
Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung