Note: The other languages of the website are Google-translated. Back to English

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

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

Автоматическое сохранение и закрытие книги после бездействия в течение определенного времени с помощью VBA

стрелка синий правый пузырь Автоматическое сохранение и закрытие книги после бездействия в течение определенного времени с помощью VBA

В Excel нет встроенной функции для решения этой проблемы, но я могу ввести код макроса, который поможет вам сохранить и закрыть книгу после бездействия в течение определенного времени.

1. Включите книгу, которую вы хотите автоматически сохранить и закрыть после бездействия в течение определенных секунд, и нажмите Alt + F11 ключи для открытия Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модули для создания Модули script и вставьте в него код ниже. Смотрите скриншот:

Dim CloseTime As Date
Sub TimeSetting()
    CloseTime = Now + TimeValue("00:00:15")
    On Error Resume Next
    Application.OnTime EarliestTime:=CloseTime, _
      Procedure:="SavedAndClose", Schedule:=True
End Sub
Sub TimeStop()
    On Error Resume Next
    Application.OnTime EarliestTime:=CloseTime, _
      Procedure:="SavedAndClose", Schedule:=False
 End Sub
Sub SavedAndClose()
    ActiveWorkbook.Close Savechanges:=True
End Sub

 

документ сохранить закрыть книгу после бездействия 1

3. Затем в Обозреватель проекта панель, дважды щелкните Эта рабочая тетрадь, и вставьте ниже код в сценарий рядом. Смотрите скриншот:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Call TimeStop
End Sub

Private Sub Workbook_Open()
    Call TimeSetting
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
   Call TimeStop
   Call TimeSetting
End Sub

 

документ сохранить закрыть книгу после бездействия 2

4. Дважды щелкните модуль, вставленный на шаге 2, и нажмите F5 ключ для запуска кода. Смотрите скриншот:
документ сохранить закрыть книгу после бездействия 3

5. Затем через 15 секунд появится диалоговое окно с напоминанием о сохранении книги и нажмите Да чтобы сохранить и закрыть книгу.
документ сохранить закрыть книгу после бездействия 4

Советы:

(1) В первом коде вы можете изменить время бездействия на другое в этой строке: Сейчас + TimeValue ("00:00:15")

(2) Если вы никогда раньше не сохраняли книгу, Сохранить как диалоговое окно появится первым и попросит вас сохранить его.
документ сохранить закрыть книгу после бездействия 5


хорошо Защитить лист

Kutools для Excel Защитить лист Функция может быстро защитить несколько листов или всю книгу сразу.
документ защитить несколько листов

Лучшие инструменты для работы в офисе

Kutools for Excel решает большинство ваших проблем и увеличивает вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма ...
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон...
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы... Предотвращение дублирования ячеек; Сравнить диапазоны...
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор ...
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое ...
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии...
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом ...
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF...
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
вкладка kte 201905

Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
офисный дно
Сортировать комментарии по
Комментарии (11)
Оценок пока нет. Оцените первым!
Этот комментарий был сведен к минимуму модератором на сайте
Приведенный выше код не работает, когда ячейка активна. То есть

1. введите значение в ячейку (не нажимайте Enter или Tab)

2. свернуть Excel.

В этом случае код не работает.
Этот комментарий был сведен к минимуму модератором на сайте
Если вы работаете в отдельной книге в момент, когда наступает время закрытия, она закроет эту книгу, а не неактивную. Это можно решить, изменив код на:

Dim CloseTime как дата
Dim WKB как строка
Подустановка времени()
WKB = ActiveWorkbook.Имя
CloseTime = Сейчас + TimeValue("00:00:15")
On Error Resume Next
Application.OnTime EarlyestTime:=CloseTime, _
Процедура:="SavedAndClose", Расписание:=True
End Sub
Субтаймстоп()
On Error Resume Next
Application.OnTime EarlyestTime:=CloseTime, _
Процедура:="SavedAndClose", Расписание:=False
End Sub
Sub SavedAndClose ()
Книги (WKB). Закрыть Savechanges: = True
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Я заметил то же самое. И нашел такое же решение :-)
Этот комментарий был сведен к минимуму модератором на сайте
Иногда я сталкиваюсь с «Ошибкой времени выполнения», когда открываю книгу, в которую встроен этот код. В любом случае, написать этот код лучше, чтобы он был более стабильным?
Этот комментарий был сведен к минимуму модератором на сайте
блестящее спасибо
Этот комментарий был сведен к минимуму модератором на сайте
привет, я хочу вставить этот код в другой код, например, код истечения срока действия с этим кодом, как я могу это сделать ....?
код... следующий
Private Sub Workbook_Open ()

Dim exdate As Date
Dim i As Integer

'изменить значения для даты истечения срока действия здесь !!!
анул = 2019 'год
луна = 5 'месяц
ziua = 16 'день

exdate = DateSerial (анул, луна, зиуа)

Если Дата > exdate Тогда
MsgBox ("Срок действия приложения " & ThisWorkbook.Name & " устарел!" & vbNewLine & vbNewLine _
& "Дата истечения срока действия: " & exdate & " :)" & vbNewLine & vbNewLine _
& "Обратитесь к администратору, чтобы обновить версию!"), vbCritical, ThisWorkbook.Name

expired_file = ThisWorkbook.Path & "\" & ThisWorkbook.Name

При ошибке Перейти к ErrorHandler
С рабочими книгами (ThisWorkbook.Name)
Если .Путь <> "" Тогда

.Сохранено = Истина
.Чангефилеакцесс кслреадонли

Убить файл с истекшим сроком действия

'получить имя надстройки, если это надстройка, и удалить надстройку
Если Приложение.Версия >= 12 Тогда
я = 5
Иначе: я = 4
End If

Если Right(ThisWorkbook.Name, i) = ".xlam" или Right(ThisWorkbook.Name, i) = ".xla", тогда
wbName = Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - i)
'удалить надстройку, если она установлена
Если AddIns(wbName).Installed То
AddIns(wbName).Installed = False
End If
End If

.Закрыть

End If
Конец с

Exit Sub

End If

'MsgBox ("У вас есть " & exdate - Дата и "Осталось дней")
Exit Sub

ErrorHandler:
MsgBox «Не удалось удалить файл..»
Exit Sub

End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Если вы работаете в отдельной книге в момент, когда наступает время закрытия, она закроет эту книгу, а не неактивную. Это можно решить, изменив код на: - исправлено и протестировано из комментария ниже - используйте этот код:

Войдите в «Эта рабочая книга»

Private Sub Workbook_BeforeClose (Отменить как логическое)
Вызов TimeStop
End Sub
Private Sub Workbook_Open ()
Настройка времени вызова
End Sub
Private Sub Workbook_SheetChange (ByVal Sh как объект, ByVal Target как диапазон)
Вызов TimeStop
Настройка времени вызова
End Sub


Войдите в «модуль»:

Dim CloseTime как дата
Подустановка времени()
CloseTime = Сейчас + TimeValue("00:10:00")
On Error Resume Next
Application.OnTime EarlyestTime:=CloseTime, _
Процедура:="SavedAndClose", Расписание:=True
End Sub
Субтаймстоп()
On Error Resume Next
Application.OnTime EarlyestTime:=CloseTime, _
Процедура:="SavedAndClose", Расписание:=False
End Sub
Sub SavedAndClose ()
ThisWorkbook.Close Savechanges: = True
End Sub


вы можете изменить настройку времени, изменив CloseTime = Now + TimeValue("00:10:00") - для этого установлено значение 10 минут, измените ("00:10:00") на любое время, которое вы хотите, и оно работает.
Этот комментарий был сведен к минимуму модератором на сайте
Я не уверен, что произошло, но это решение больше не работает. Вот исправление этого решения, которое сработало для меня:

`` ''
Dim resetCount As Long

Общедоступная подпрограмма Workbook_Open()
On Error Resume Next
Установите xWB = ThisWorkbook
сброскаунт = 0
End Sub

Private Sub Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Range) При ошибке Возобновить Далее
Сброс
End Sub

Sub Reset () При ошибке Возобновить Далее
Статический xCloseTime
Если resetCount <> 0 Тогда
ThisWorkbook.Application.OnTime xCloseTime, "SaveWork1", Schedule:=False
resetCount = resetCount + 1
xCloseTime = DateAdd("n", 15, Сейчас)
ThisWorkbook.Application.OnTime xCloseTime, "SaveWork1", Schedule: = True

Еще
resetCount = resetCount + 1
xCloseTime = DateAdd("n", 15, Сейчас)
ThisWorkbook.Application.OnTime xCloseTime, "SaveWork1", Schedule: = True
End If
End Sub
`` ''
Это использует тот же SaveWork1 As:
````Подпрограмма SaveWork1()
Приложение.DisplayAlerts = False
ThisWorkbook.Сохранить
ThisWorkbook.Закрыть

Application.DisplayAlerts = True
End Sub

`` ''
Этот комментарий был сведен к минимуму модератором на сайте
Это замечательно. Любые советы по добавлению всплывающего окна сообщения, которое предупредит пользователя о том, что лист вот-вот закроется, и даст им возможность сбросить таймер?
Этот комментарий был сведен к минимуму модератором на сайте
Когда я не хочу редактировать, а просто хочу посоветоваться, файл все равно закрывается. Он не должен закрываться. Должен перезапустить подсчет, когда я выбираю ячейки. Каково решение?
Этот комментарий был сведен к минимуму модератором на сайте
Когда я не хочу редактировать, а просто хочу посоветоваться, файл все равно закрывается. Он не должен закрываться. Должен перезапустить подсчет, когда я выбираю ячейки. Каково решение?
Здесь еще нет комментариев
Оставляйте свои комментарии
Публикация как гость
×
Оценить этот пост:
0   Характеристики
Предлагаемые места

Подписывайтесь на Нас

Copyright © 2009 - www.extendoffice.ком. | Все права защищены. Питаться от ExtendOffice, | Карта сайта
Microsoft и логотип Office являются товарными знаками или зарегистрированными товарными знаками Microsoft Corporation в США и / или других странах.
Защищено Sectigo SSL