如何仅在工作表打开时自动保存?解决关闭后自动启动保存问题
Excel自动保存定时器关闭失效的解决方案
问题核心:你取消定时器时使用的Now + TimeValue("00:30:00")和当初设置定时的时间不一致,导致Application.OnTime无法定位到对应的定时任务,取消操作失效,进而触发时自动重新打开已关闭的工作簿。
解决步骤:
声明公共变量存储定时触发时间
在Excel的标准模块(如Module1)中添加以下代码,用于记录下一次自动保存的准确时间:Public nextSaveTime As Date修改自动保存子程序
更新autoSalvar代码,将下一次触发时间存入变量:Sub autoSalvar() ThisWorkbook.Save nextSaveTime = Now + TimeValue("00:30:00") Application.OnTime EarliestTime:=nextSaveTime, Procedure:="autoSalvar", Schedule:=True End Sub在工作簿关闭事件中精准取消定时器
打开ThisWorkbook的代码窗口,添加BeforeClose事件代码,用存储的准确时间取消定时任务:Private Sub Workbook_BeforeClose(Cancel As Boolean) On Error Resume Next ' 避免定时器已过期时触发错误 Application.OnTime EarliestTime:=nextSaveTime, Procedure:="autoSalvar", Schedule:=False On Error GoTo 0 End Sub
注意事项:
- 确保
nextSaveTime是公共变量,能被工作簿事件和autoSalvar子程序共同访问。 - 加入错误处理语句是为了防止在定时器已经触发、任务已执行的情况下,取消操作抛出错误。
内容的提问来源于stack exchange,提问作者Júlio César Pedrini
相关产品推荐
相关产品推荐

