在自动closures工作簿之前保存文件

如果在1分钟内处于非活动状态,我想closures工作簿。 但是在closures之前,我想保存它的备份,但不要对原始文件进行更改。 我怎样才能合并这个代码:

ActiveWorkbook.SaveAs filename:=filename, FileFormat:=xlWorkbookNormal 

进入这个程序

 Sub SetTimer() Dim bookname Dim filename DownTime = Now + TimeValue("00:01:00") bookname = ActiveWorkbook.Name filename = "C:\myhome\backups\" & bookname Application.OnTime EarliestTime:=DownTime, _ Procedure:="ShutDown", Schedule:=True End Sub 

如果我把它插入代码,它会要求我在定时器完成之前保存。 我想在时间结束后再问。

我想这是你以后的事情:

 Public Sub SetTimer() Dim DownTime As Date DownTime = Now + TimeValue("00:01:00") Application.OnTime EarliestTime:=DownTime, _ Procedure:="ShutDown", Schedule:=True End Sub Private Sub ShutDown() ' Be careful about using ActiveWorkbook vs ThisWorkbook vs getting a direct reference to the required workbook. Dim bookname As String bookname = ActiveWorkbook.Name Dim filename As String filename = "C:\myhome\backups\" & bookname ActiveWorkbook.SaveAs filename:=filename, FileFormat:=xlWorkbookNormal End Sub 

您需要将SaveAs放入一个名为“ShutDown”的单独方法中。 我假定你把它放在原始方法的末尾。 对Application.OnTime()的调用运行并调度稍后调用的ShutDown() ,然后立即继续运行SetTimer()的其余代码。

只需在Workbook_BeforeClose中放置一个事件处理程序即可。 我亲自检查一下,看它是否被修改过,所以你不会得到一堆不必要的备份:

 Private Sub Workbook_BeforeClose(Cancel As Boolean) Application.DisplayAlerts = False If Not Me.Saved Then Me.SaveAs "C:\myhome\backups\" & Me.Name, xlWorkbookNormal End If Application.DisplayAlerts = True End Sub