Isso não resolve seu problema atual, mas não é possível colar grandes blocos de código em um comentário. Aqui está um VBA que eu coloco em qualquer pasta de trabalho que eu quero ter certeza de fazer backup. Faz um backup sempre que é chamado. Eu costumo chamá-lo do evento Workbook_Open
. Se você não optar pelo timestamp, ele fará o backup apenas uma vez por dia. Para arquivos que eu estou realmente nervoso, eu chamo a função com um timestamp no evento Workbook_AfterSave
também.
Option Explicit
'This function saves a datestamped or timestamped copy of the file in a folders in the same location as the file
'It is typically called from the ThisWorkbook object with something like:
'Private Sub Workbook_Open()
' BackupThisFile
'End Sub
Function BackupThisFile(Optional AddTimestamp As Boolean = False)
Dim fPath As String
Dim fName As String
Dim fExt As String
Dim iExt As Integer
Const backupFolder As String = "Backups"
'Get file path
fPath = ThisWorkbook.path
If Right(fPath, 1) <> Application.PathSeparator Then fPath = fPath & Application.PathSeparator
'Add the backup folder name
fPath = fPath & backupFolder
If Right(fPath, 1) <> Application.PathSeparator Then fPath = fPath & Application.PathSeparator
'Create the backup directory if it doesn't already exist
On Error Resume Next
MkDir fPath
On Error GoTo 0
'Get file name
fName = ThisWorkbook.Name 'Get file name with extension
iExt = InStrRev(fName, ".") 'Find the . separating name from extension
fExt = Right(fName, Len(fName) - iExt + 1) 'Saves the extension
fName = Left(fName, iExt - 1) 'Clips the extension
'Compile path, file name, date stamp, and extension into one variable
fPath = fPath & fName & " " & Format(Date, "yyyy-mm-dd")
'Add timestamp if required
If AddTimestamp Then fPath = fPath & " " & Format(Now, "hhmmss")
'Add the file extension
fPath = fPath & fExt
'Save a copy if it doesn't already exist
Dim fso: Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.fileExists(fPath) Then ThisWorkbook.SaveCopyAs fPath
End Function