【发布时间】:2015-03-06 20:38:52
【问题描述】:
我想在每次锁定我的 Windows 电脑时保存我的电子表格。 excel中是否有内置触发器(类似于关闭时)?或者我是否可以让宏每分钟运行一次并检查我的机器是否正在使用或锁定?
【问题讨论】:
标签: excel windows-7 windows-runtime vba
我想在每次锁定我的 Windows 电脑时保存我的电子表格。 excel中是否有内置触发器(类似于关闭时)?或者我是否可以让宏每分钟运行一次并检查我的机器是否正在使用或锁定?
【问题讨论】:
标签: excel windows-7 windows-runtime vba
如果你真的需要这个,你可以尝试以下解决方法:
在事件查看器中启用对锁定事件的审核,以便记录用于锁定的事件 4800,as described here。
创建锁定事件触发的计划任务。选择使用协议触发事件:“安全”,来源:“Microsoft-Windows-Security-Auditing”和事件 ID:“4800”
运行一个使用 GetObject(, "Excel.Application") 的 vbscript 来检索当前活动的 excel 会话并运行一个为您保存 Application.Run 的宏(就像在 this example 中一样)
不是很直接,但另一方面,最简单的方法是在每次锁定计算机之前按 ctrl+s。
【讨论】:
你可以试试这个,看看它是否有效,而不是使用宏:
但如果您特别想要一个宏,我可以尝试为您构建一个。
【讨论】:
好的,将它添加到标准模块中:
Option Explicit
Public RunTime
Sub StartTimer()
RunTime = Now + #12:10:00 AM#
Application.OnTime RunTime, "SaveBook", schedule:=True
End Sub
Sub SaveBook()
ActiveWorkbook.Save
StartTimer
End Sub
Sub StopTimer()
On Error Resume Next
Application.OnTime RunTime, "SaveBook", schedule:=False
End Sub
把它放在你的工作簿类模块中:
Private Sub Workbook_Open()
StartTimer
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
然后将其添加到您的工作簿类模块中:
Private Sub Workbook_Open()
StartTimer
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
StopTimer
End Sub
玩得开心,玩弄它
【讨论】:
#12:10:00 AM# 是每 10 分钟一次吗?还是每 12 小时 10 分钟?无论如何,它作为一个后备是很好的 - 有没有我可以添加到sub SaveBook() 的函数“此工作簿是否处于活动状态” 或“屏幕保护程序是否正在运行”?跨度>