Есть ли способ сделать открытый лист закрытым, если в нем нет активности более 5 минут?
Итак, например: я работаю над листом на некоторое время, а затем ухожу в течение 20 минут с открытым листом. Кто-то из сети требует доступа к листу, но не может, потому что я на нем.
Я хочу, чтобы после того, как я ушел со своего стола более 5 минут, лист сэкономит и закроет лист.
Возможно ли это? Если да, то как? Я могу найти сценарии, чтобы показать, как сохранить и закрыть лист, но я еще не нашел тот, который использует таймер…
Хорошо, с первоначальным ответом ниже, я придумал свой собственный, после небольшого исследования.
После того как вы откроете раздел разработчика, вы найдете свои листы, поместите этот код ниже в 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
Часть, которую я создал, часть, которая была изначально размещена, работает в закрытии, но не сохраняется. Сделайте то, что вы будете с ним, измените его, как вы сочтете нужным, но я рад, что получил его работу.
Это информация из ссылки, поэтому этот вопрос можно использовать в качестве ссылки:
Вставьте этот код в качестве модуля:
' 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