Добрый день! Подскажите пожалуйста, каким образом можно автоматически создавать резервные копии файла при каждом его запуске? Необходимо сохранять исходную версию файла в сетевую папку каждый раз, когда его открывает пользователь.
Похожая задача (создание резервной копии перед закрытием) решается таким образом:
Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim x, n ' проверка, не является ли данный файл уже сохраненной ранее копией n = ActiveWorkbook.Name If InStr(n, "closed by") = 0 Then ' не является, продолжаем strPath = "\\155.170.18.7\TXO1" On Error Resume Next x = GetAttr(strPath) And 0 If Err = 0 Then ' если путь существует - сохраняем копию книги FileNameXls = strPath & "\" & ActiveWorkbook.ActiveSheet.[b71] & ".xls" ActiveWorkbook.SaveCopyAs Filename:=FileNameXls Else 'если путь не существует - выводим сообщение MsgBox "Папка " & strPath & " недоступна или не существует!", vbCritical End If Else: MsgBox "this file is saved copy - macros not active" End If End Sub
Sub Auto_Open() Dim x As String strPath = "c:\TEMP" ' дирректория для резервной копии On Error Resume Next x = GetAttr(strPath) And 0 If Err = 0 Then ' если данный путь существует, то сохраняем в него открываемую книгу strDate = Format(Now, "dd/mm/yy hh-mm") FileNameXls = strPath & "\" & Left(ActiveWorkbook.Name, _ Len(ActiveWorkbook.Name) - 4) & " " & strDate & ".xls" ActiveWorkbook.SaveCopyAs Filename:=FileNameXls Else 'если путь не существует или же он недоступен, то выводим соответствующее сообщение MsgBox "Создание резервной копии невозможно! Папка " & strPath & " недоступна или не существует!", vbCritical End If End Sub