用户"锁定"视窗

时间:2015-03-06 20:38:52

标签: excel-vba windows-7 windows-runtime vba excel

我每次锁定Windows电脑时都想保存电子表格。 excel中是否有内置触发器(类似于on-close)?或者我可以让每分钟运行一个宏并检查我的机器是否正在使用或锁定?

3 个答案:

答案 0 :(得分:1)

如果您真的需要这个,可以尝试以下解决方法:

在事件查看器中启用锁定事件的审核,以便记录事件4800以进行锁定as described here

创建在锁定事件上触发的计划任务。选择带有协议的事件触发器:"安全",来源:" Microsoft-Windows-Security-Auditing"和事件ID:" 4800"

运行使用GetObject(, "Excel.Application")的vbscript来检索当前有效的Excel会话并运行使用Application.Run为您保存的宏(如this example中所示)

不是很直接,但另一方面,在锁定计算机之前,每次按 ctrl + s 都很简单。

答案 1 :(得分:0)

你可以尝试这个,看看这是否有效而不是使用宏:

  • 单击“Microsoft Office按钮”,然后单击“Excel选项”。
  • 点击保存。
  • 选中每x分钟保存自动恢复信息复选框。
  • 在分钟列表中,指定程序保存数据的频率和程序状态。

但如果您特别想要一个宏,我可以尝试为您创建一个宏。

答案 2 :(得分:-1)

好的,将其添加到标准模块中:

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

玩得开心,随便摆弄它