In the ThisWorkbook code module
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnTime nTime, "SaveFile", , False
End Sub
Private Sub Workbook_Open()
Call SaveFile
End Sub
In a standard code module
Public nTime As Double
Public Sub SaveFile()
Dim PosExt As Long
With ThisWorkbook
nTime = Now + TimeSerial(1, 0, 0) 'every hour
PosExt = InStrRev(".", .Name)
.SaveCopyAs .Path & Application.PathSeparator & Left(.Name, PosExt -
1) & Format(Now, "yyyy-mm-dd hh-mm-ss")
Application.OnTime nTime, "SaveFile"
End With
End Sub