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

Як зберегти та закрити книгу після бездіяльності на певний час?

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

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

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

У Excel немає вбудованої функції для вирішення цієї проблеми, але я можу ввести макрокод, який допоможе вам зберегти та закрити книгу після бездіяльності за певний час.

1. Увімкніть книгу, яку потрібно автоматично зберігати та закривати після бездіяльності протягом певних секунд, і натисніть Alt + F11 клавіші, щоб відкрити Microsoft Visual Basic для додатків вікна.

2. клацання Insert > Модулі щоб створити Модулі і вставте в нього код нижче. Дивіться знімок екрана:

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

 

doc save close книга після бездіяльності 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

 

doc save close книга після бездіяльності 2

4. Двічі клацніть на модулі, який ви вставили на кроці 2, і натисніть F5 клавіша для запуску коду. Дивіться знімок екрана:
doc save close книга після бездіяльності 3

5. Потім через 15 секунд з’явиться діалогове вікно з нагадуванням про збереження книги та натисніть Так щоб зберегти та закрити книгу.
doc save close книга після бездіяльності 4

Порада:

(1) У першому коді ви можете змінити час неактивності на інший у цьому рядку: Зараз + TimeValue ("00:00:15")

(2) Якщо ви ніколи раніше не зберігали книгу, файл Зберегти як спершу з’явиться діалогове вікно з проханням зберегти його.
doc save close книга після бездіяльності 5


добре Захист робочого аркуша

Kutools для Excel Захист робочого аркуша Ця функція може швидко захистити відразу кілька аркушів або всю книгу.
doc захищає декілька робочих аркушів

Найкращі інструменти для підвищення продуктивності офісу

Kutools для Excel вирішує більшість ваших проблем і збільшує продуктивність на 80%

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

Вкладка Office забезпечує інтерфейс з вкладками для Office і значно спрощує вашу роботу

  • Увімкніть редагування та читання на вкладках у Word, Excel, PowerPoint, Publisher, Access, Visio та Project.
  • Відкривайте та створюйте кілька документів на нових вкладках того самого вікна, а не в нових вікнах.
  • Збільшує вашу продуктивність на 50% та зменшує сотні клацань миші для вас щодня!
дно офісної таблиці
Коментарі (11)
Поки немає оцінок. Оцініть першим!
Цей коментар був мінімізований модератором на сайті
Наведений вище код не працює, коли клітинка активна. Це є

1. введіть значення в клітинку (не натискайте Enter або tab)

2. мінімізувати excel.

У цьому випадку код не працює.
Цей коментар був мінімізований модератором на сайті
Якщо ви працюєте в окремій робочій книзі в момент, коли досягнуто моменту завершення, вона закриє цю книгу, а не неактивну. Це можна вирішити, налаштувавши код на:

Темний час закриття як дата
Dim WKB як рядок
Sub TimeSetting()
WKB = ActiveWorkbook.Name
CloseTime = Зараз + TimeValue("00:00:15")
On Error Resume Next
Application.OnTime EarliestTime:=Час закриття, _
Procedure:="SavedAndClose", Schedule:=True
End Sub
Sub TimeStop()
On Error Resume Next
Application.OnTime EarliestTime:=Час закриття, _
Procedure:="SavedAndClose", Schedule:=False
End Sub
Sub SavedAndClose()
Робочі книги (WKB). Закрийте Збереження змін:=Правда
End Sub
Цей коментар був мінімізований модератором на сайті
Я помітив те саме. І знайшов те саме рішення :-)
Цей коментар був мінімізований модератором на сайті
Іноді я стикаюся з "Помилка часу виконання", коли відкриваю книгу, в яку вбудовано цей код. У будь-якому випадку написати цей код краще, щоб він був більш стабільним?
Цей коментар був мінімізований модератором на сайті
блискуче дякую
Цей коментар був мінімізований модератором на сайті
привіт, я хочу вставити цей код в інший код, наприклад, код закінчення терміну дії з цим кодом, як я можу зробити...?
код... слідує
Приватна додаткова робоча книга_Open()

Яскравий exdate As Date
Dim i як ціле число

'змінити значення для терміну придатності тут !!!
за рік = 2019 'рік
luna = 5 'місяць
ziua = 16 'день

exdate = DateSerial(anul, luna, ziua)

Якщо Date > exdate Then
MsgBox ("Термін дії програми " & ThisWorkbook.Name & " закінчився!" & vbNewLine & vbNewLine _
& "Дата встановлення терміну дії: " & exdate & " :)" & vbNewLine & vbNewLine _
& "Зв'яжіться з адміністратором, щоб оновити версію!"), vbCritical, ThisWorkbook.Name

expired_file = This Workbook.Path & "\" & This Workbook.Name

Увімкніть помилку Перейдіть до ErrorHandler
З робочими зошитами(ThisWorkbook.Name)
Якщо .Path <> "" Тоді

.Збережено = Правда
.ChangeFileAccess xlReadOnly

Вбити expired_file

'отримайте ім'я надбудови, якщо це надбудова та видаліть надбудову
Якщо Application.Version >= 12 Тоді
я = 5
Інакше: i = 4
End If

Якщо Right(ThisWorkbook.Name, i) = ".xlam" або Right(ThisWorkbook.Name, i) = ".xla" Тоді
wbName = Left(This Workbook.Name, Len(This Workbook.Name) - i)
'видалити надбудову, якщо вона встановлена
Якщо AddIns(wbName).Installed Then
AddIns(wbName).Installed = False
End If
End If

.Закрити

End If
Кінець з

Exit Sub

End If

'MsgBox ("У вас є " & exdate - Дата і "Дні залишилися")
Exit Sub

ErrorHandler:
MsgBox "Не вдалося видалити файл.."
Exit Sub

End Sub
Цей коментар був мінімізований модератором на сайті
Якщо ви працюєте в окремій робочій книзі в момент, коли досягнуто моменту завершення, вона закриє цю книгу, а не неактивну. Це можна вирішити, налаштувавши код на: - виправлений і перевірений з коментаря нижче - використовуйте цей код:

Увійдіть до «Цей робочий зошит»

Приватна підпорядкована робоча книга_BeforeClose(Скасувати як логічне значення)
Зателефонуйте TimeStop
End Sub
Приватна додаткова робоча книга_Open()
Налаштування часу виклику
End Sub
Private Sub Workbook_SheetChange(ByVal Sh як об'єкт, ByVal Target як діапазон)
Зателефонуйте TimeStop
Налаштування часу виклику
End Sub


Увійдіть у «модуль»:

Темний час закриття як дата
Sub TimeSetting()
CloseTime = Зараз + TimeValue("00:10:00")
On Error Resume Next
Application.OnTime EarliestTime:=Час закриття, _
Procedure:="SavedAndClose", Schedule:=True
End Sub
Sub TimeStop()
On Error Resume Next
Application.OnTime EarliestTime:=Час закриття, _
Procedure:="SavedAndClose", Schedule:=False
End Sub
Sub SavedAndClose()
This Workbook.Close Savechanges:=True
End Sub


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

````
Dim resetCount As Long

Загальнодоступна підручна книга_Open()
On Error Resume Next
Встановіть xWB = Цей зошит
resetCount = 0
End Sub

Приватна підкладка Workbook_SheetChange(ByVal Sh як об'єкт, ByVal Target як діапазон)При помилці Поновлення далі
скидання
End Sub

Sub Reset()On Error Продовжити далі
Статичний 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:
```` Sub SaveWork1()
Application.DisplayAlerts = False
Цей зошит. Зберегти
Цей зошит. Закрити

Application.DisplayAlerts = True
End Sub

````
Цей коментар був мінімізований модератором на сайті
Це чудово. Будь-які поради щодо додавання спливаючого вікна повідомлення, яке попереджатиме користувача, що аркуш ось-ось закриється, і дасть йому можливість скинути таймер?
Цей коментар був мінімізований модератором на сайті
Коли я не хочу редагувати, а хочу лише проконсультуватися, файл все одно закривається. Воно не повинно закриватися. Коли я вибираю клітинки, потрібно відновити підрахунок. Яке рішення?
Цей коментар був мінімізований модератором на сайті
Коли я не хочу редагувати, а хочу лише проконсультуватися, файл все одно закривається. Воно не повинно закриватися. Коли я вибираю клітинки, потрібно відновити підрахунок. Яке рішення?
There are no comments posted here yet
Залишайте свої коментарі
Публікація як гість
×
Оцініть цю публікацію:
0   Персонажі
Рекомендовані місця

Слідуй за нами

Copyright © 2009 - WWW.extendoffice.com. | Всі права захищені. На основі ExtendOffice. | Карта сайту
Microsoft та логотип Office є товарними знаками або зареєстрованими товарними знаками Microsoft Corporation у США та / або інших країнах.
Захищений Sectigo SSL