Excel VBA中的超时问题

3
我想知道在Excel中是否可以创建一个VBA宏,每 X 分钟保存一次文件。我已经知道如何在Excel启动后初始化宏,我在 Google 上找到了类似这样的代码,应该会暂停宏: Application.Wait(Now + TimeValue("0:10:00")) 但是这也会阻塞用户输入,在此期间用户无法进行任何更改。
这不是防止崩溃的措施,我需要这个功能的原因是有些用户经常忘记定期保存文档。
谢谢, Francis

2
可能是以下问题的重复:延迟Excel保存功能如何让VBA每10分钟执行一次? - Dmitry Pavliv
1个回答

2
Simoco的这两个示例非常好用,但如果你想避免不必要的保存(特别是在处理网络文件或大型文件时),可以在每次工作表发生更改时进行检查。只需使用Worksheet_Change函数即可实现此功能,以下是一种可能的模式:
Private Sub Worksheet_Change(ByVal Target As Range)


If (Now > TimeStamp)
    ThisWorkbook.SaveAs BlaBlaBlaBlaBla
    TimeStamp = Now + TimeValue("0:10:00")
End If

End Sub

时间戳需要是每个工作簿中定义的全局变量。

顺便提一下,请确保每隔X分钟保存文件不会影响Excel的撤销/重做功能。我记得以前使用自动保存功能时出现了一些不必要的行为。

另一个想法:Google文档不需要这种宏,因为没有保存的必要。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接