Excel在用户不活动后关闭

时间:2014-03-19 19:46:54

标签: excel vba excel-vba

我在VBA上相当新,并且有代码可以在不活动后关闭excel。我不确定excel定义为不活动,我无法获取模式。如果有人能向我解释这一点,我会非常感激。

本练习册中的代码" SECTION

Option Explicit

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
ResetTimer
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
ResetTimer
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
ResetTimer
End Sub

标准宏中的代码

Public CloseDownTime As Variant

Public Sub ResetTimer()
On Error Resume Next
If Not IsEmpty(CloseDownTime) Then Application.OnTime EarliestTime:=CloseDownTime, Procedure:="CloseDownFile", Schedule:=False
CloseDownTime = Now + TimeValue("00:10:00") ' hh:mm:ss
Application.OnTime CloseDownTime, "CloseDownFile"
End Sub

Public Sub CloseDownFile()
On Error Resume Next
Application.StatusBar = "Inactive File Closed: " & ThisWorkbook.Name
ThisWorkbook.Close SaveChanges:=True
End Sub

1 个答案:

答案 0 :(得分:1)

我不确定Excel如何定义它或用户期望它的行为方式。从用户角度来看,我认为mouse movementkeypresses是定义活动的内容。缺少两者都是不活跃的启发式指标。

当然,用户可能只是坐在那里阅读表格。一种完美的方法可能是在用户的大脑中安装探针,以检测他是否仍在关注。实现这一目标的确切步骤似乎超出了本问题的范围。

编辑:根据您的评论,我认为您希望阻止工作簿关闭。好吧,你可以做很多事情来防止工作簿关闭。我认为最简单的方法就是删除This Workbook中的代码。