Just some background:
xl2k and below came with an optional addin called AutoSave.xla. It could be set
to save every x minutes (user selectable). And it just saves the file at those
intervals.
xl2002+ comes with something called autorecovery. It's also optional, but if
the user turns it on, it saves a copy of that workbook in a special location
(also user selectable). If windows or excel crashes, then the next time excel
opens, it notices that there's a file in that location. Excel prompts the user
to see if he/she wants to recover that file that was saved when excel/windows
crashed.
This autorecovery feature isn't used for the same purpose as AutoSave.
(If you have a copy of autosave.xla from a previous version, it'll work with
xl2002+, too.)
And Gord Dibben posted this:
Autosave.xla from Office 2000 or 97 will work with Excel 2002 or 2003.
If you have a previous copy, move it to your Office\Library.
To download the 97 version see here........
http://www.stat.jmu.edu/trep/Marchat/sp2001/Library.htm
==
I've never tried it in xl2007. If you're using xl2007, you may want to do some
testing before you rely on it.
===========
But since you don't want to have the user select options to turn on autosave,
you may find adding an ontime macro that runs every so often to your workbook's
project.
Chip Pearson explains how to use application.ontime:
http://www.cpearson.com/excel/ontime.htm
I went to Chip's site and added some stuff that saved a copy of a .xls file in
the same folder as the original file.
This goes into a General module:
Option Explicit
Public RunWhen As Double
Public Const cRunIntervalSeconds = 600 '10 minutes (10*60)
Public Const cRunWhat = "SaveABackupCopy" ' the name of the procedure to run
Sub Auto_Open()
Call StartTimer
End Sub
Sub Auto_Close()
Call StopTimer
End Sub
Sub StartTimer()
RunWhen = Now + TimeSerial(0, 0, cRunIntervalSeconds)
Application.OnTime EarliestTime:=RunWhen, _
Procedure:=cRunWhat, Schedule:=True
End Sub
Sub SaveABackupCopy()
Dim NewFileName As String
If ThisWorkbook.Path = "" Then
'never saved, don't do anything
Else
If LCase(Right(ThisWorkbook.Name, 4)) = ".xls" Then
NewFileName = Left(ThisWorkbook.FullName, _
Len(ThisWorkbook.FullName) - 4) _
& "_" & Format(Now, "yyyymmdd_hhmmss") & ".xls"
ThisWorkbook.SaveCopyAs Filename:=NewFileName
End If
End If
'get ready for the next time
StartTimer
End Sub
Sub StopTimer()
On Error Resume Next
Application.OnTime EarliestTime:=RunWhen, _
Procedure:=cRunWhat, Schedule:=False
End Sub
If you're new to macros, you may want to read David McRitchie's intro at:
http://www.mvps.org/dmcritchie/excel/getstarted.htm