2

如果超过 5 分钟没有活动,有没有办法让打开的工作表自行关闭?

例如:我在工作表上工作了一段时间,然后在该工作表打开的情况下离开 20 分钟。网络上的某个人需要访问工作表,但不能因为我在上面。

我想要它,以便在我离开办公桌超过 5 分钟后,工作表将自行保存并关闭所述工作表。

这可能吗?如果有怎么办?我可以找到显示如何保存和关闭工作表的脚本,但我还没有找到使用计时器的脚本......

4

2 回答 2

3

这是来自链接的信息,所以这个问题可以作为参考:

将此代码作为模块插入:

' DateTime  : 09/05/2007 08:43
' Author    : Roy Cox (royUK)
' Website   :  Clck here for more examples and Excel Consulting
' Purpose   : Place in a standard module
' Disclaimer; This code is offered as is with no guarantees. You may use it in your
'             projects but please leave this header intact.

'---------------------------------------------------------------------------------------
Option Explicit
Public EndTime
Sub RunTime()
    Application.OnTime _
            EarliestTime:=EndTime, _
            Procedure:="CloseWB", _
            Schedule:=True
End Sub
Sub CloseWB()
    Application.DisplayAlerts = False
    With ThisWorkbook
        .Save
        .Saved = True
        .Close
    End With
End Sub

将其插入“ThisWorkbook”

Private Sub Workbook_Open()
    '--> Set Time Below
    EndTime = Now + TimeValue("00:00:00")
    RunTime
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    If EndTime Then
        Application.OnTime _
        EarliestTime:=EndTime, _
        Procedure:="CloseWB", _
        Schedule:=False
        EndTime = Empty
    End If
    '--> Set Time Below
    EndTime = Now + TimeValue("00:00:00")
    RunTime
End Sub
于 2012-06-08T14:56:53.290 回答
2

好的,在下面的原始答案中,经过更多研究,我想出了自己的答案。

打开开发人员部分后,您会找到工作表,将下面的代码放入 ThisWorkbook。这将允许您的代码在整个工作表中运行。我现在设置了一个 10:00 分钟的初始计时器,如果事后有活动,则设置一个 05:00 分钟的计时器。您可以将其更改为您想要的任何内容。

Option Explicit
Private Sub Workbook_Open()
    EndTime = Now + TimeValue("00:10:00")
    RunTime
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If EndTime Then
        Application.OnTime _
                EarliestTime:=EndTime, _
                Procedure:="CloseWB", _
                Schedule:=False
        EndTime = Empty
    End If
    EndTime = Now + TimeValue("00:05:00")
    RunTime
End Sub

这下面的部分需要进入一个新创建的模块,随意命名,我的叫SaveWB

Option Explicit

Public EndTime
Sub RunTime()
    Application.OnTime _
            EarliestTime:=EndTime, _
            Procedure:="CloseWB", _
            Schedule:=True
End Sub

Sub CloseWB()
    Application.DisplayAlerts = False
    With ThisWorkbook
        ThisWorkbook.Close savechanges:=True
    End With
End Sub

我将代码更改为:

With ThisWorkbook
    .Save
    .Saved = True
    .Close
End With

到它上面的东西。

    With ThisWorkbook
        ThisWorkbook.Close savechanges:=True
    End With

我创建的部分作品,最初发布的部分作品在关闭但不保存。随心所欲地使用它,按照你认为合适的方式改变它,但我很高兴我让它工作了。

于 2012-06-08T19:38:30.427 回答