Как автоматически сохранить и выйти из рабочего листа через определенное время? (Excel VBA)

Вопрос:

Есть ли способ сделать открытый лист закрытым, если в нем нет активности более 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

Часть, которую я создал, часть, которая была изначально размещена, работает в закрытии, но не сохраняется. Сделайте то, что вы будете с ним, измените его, как вы сочтете нужным, но я рад, что получил его работу.

Ответ №1

Это информация из ссылки, поэтому этот вопрос можно использовать в качестве ссылки:

Вставьте этот код в качестве модуля:

' 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

Оцените статью
TechArks.Ru
Добавить комментарий