Note: The other languages of the website are Google-translated. Back to English
Войти  \/ 
x
or
x
Регистрация  \/ 
x

or

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

В некоторых случаях, например при сохранении файла Excel на общем диске, когда файл все еще открывается пользователем, другие не могут редактировать книгу. Так как же автоматически закрыть файл после определенного времени простоя, чтобы облегчить другим работу? Эта статья поможет вам с методом VBA.

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


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


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

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

2. в Microsoft Visual Basic для приложений окно, дважды щелкните ThisWorkbook на правой панели, чтобы открыть окно кода. Затем скопируйте и вставьте ниже код VBA в окно кода. Смотрите скриншот:

Код VBA 1: автоматическое сохранение и закрытие файла Excel после определенного времени бездействия

Dim xTime As String
Dim xWB As Workbook

Private Sub Workbook_Open()
'Updated by Extendoffice 2019/1/20
    On Error Resume Next
    xTime = Application.InputBox("Please specify the idle time:", "KuTool For Excel", "00:00:20", , , , , 2)
    Set xWB = ActiveWorkbook
    If xTime = "" Then Exit Sub
    Reset
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    On Error Resume Next
    If xTime = "" Then Exit Sub
    Reset
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    On Error Resume Next
    If xTime = "" Then Exit Sub
    Reset
End Sub

Sub Reset()
    Static xCloseTime
    If xCloseTime <> 0 Then
        ActiveWorkbook.Application.OnTime xCloseTime, "SaveWork1", , False
    End If
    xCloseTime = Now + TimeValue(xTime)
    ActiveWorkbook.Application.OnTime xCloseTime, "SaveWork1", , True
End Sub

3. Затем продолжайте нажимать Вставить > модуль, скопируйте и вставьте приведенный ниже код в окно модуля. Смотрите скриншот:

Код VBA 2: автоматическое сохранение и закрытие файла Excel после определенного времени бездействия

Sub SaveWork1()
'Updated by Extendoffice 2019/1/20
    Application.DisplayAlerts = False
    ActiveWorkbook.Save
    ActiveWorkbook.Close
    
    Application.DisplayAlerts = True
End Sub

4. нажмите другой + Q клавиши одновременно, чтобы закрыть Microsoft Visual Basic для приложений окно.

5. Нажмите Отправьте > Сохранить как > Выполнить. Смотрите скриншот:

6. в Сохранить как В диалоговом окне выберите папку для сохранения файла, назовите ее, как вам нужно, в поле Имя файла выберите Excel Macro-Enabled Workbook из Сохранить как тип раскрывающийся список и, наконец, щелкните скидка кнопка. Смотрите скриншот:

С этого момента каждый раз при открытии этой книги Kutools for Excel появится диалоговое окно. Введите время сохранения и закрытия книги, а затем щелкните значок OK кнопку.

И книга будет сохранена и закрыта автоматически по истечении указанного времени простоя. Смотрите скриншот:


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

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

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

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

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
офисный дно
Say something here...
symbols left.
You are guest
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    Andrew · 9 months ago
    Hi. I need to set my shared spreadsheet on the office network to auto save and close when I'm done with it for the day. Only my boss and I are supposed to make and save changes, but several managers view it daily.

    I need to be able to have it auto save for the two of us, while not saving for other users. Is this possible? Can I set the macro to work only for us? Or will it effect everyone?

    I know how to protect the sheet, but I can't do that, because they want to be able to make some temporary changes from time to time. I just need to be able restrict auto save to specific users.
  • To post as a guest, your comment is unpublished.
    Garth · 1 years ago
    Is there a way to change this so it prompts the user to save/close the file, instead of automatically saving and closing the file?
  • To post as a guest, your comment is unpublished.
    Nitin · 1 years ago
    it is asking for idle time everytime I am opening.

    I want time should not be shown while opening the workbook. (if required, it can be changed in VBA)
    • To post as a guest, your comment is unpublished.
      Tarun · 1 years ago
      Change line
      xTime = Application.InputBox("Please specify the idle time:", "KuTool For Excel", "00:00:20", , , , , 2)


      to

      xTime = "00:00:20"


      it will not ask
  • To post as a guest, your comment is unpublished.
    robert · 1 years ago
    Is there a way to make this work so even if you not on the sheet like click over to another window the timmer will still close that sheet? It seems like i have to stay on the file for it to work
  • To post as a guest, your comment is unpublished.
    Mark · 2 years ago
    I would recommend identifying the workbook with the workbook file name. This would allow the users to have multiple workbooks open and closing out only the specific workbook that needs to have the time lock.

    Suggestion: Set xwb = Workbooks("<file name>")
    instead of: Set xwb = ActiveWorkbook

    Also, replace all references to "ActiveWorkbook" to the Xwb in the module

    Great code otherwise.
    • To post as a guest, your comment is unpublished.
      _Sammy_ · 1 years ago
      Hi Mark,

      Thanks for posting this amendment - found so many codes for closing inactive workbooks, but all of them seemed to affect the one you don't want to close!

      I'm very new to VBA, so I'm not sure how the code would work to replace the wording 'ActiveWorkbook' within the module. I've tried to replace the wording with 'Xwb' but that doesn't change anything and I may be being daft. Would you mind posting a copy of the code please?

      Thanks
    • To post as a guest, your comment is unpublished.
      crystal · 1 years ago
      Hi Mark,
      Thank you for sharing.
  • To post as a guest, your comment is unpublished.
    VR · 2 years ago
    This does not work when focus in on a particular cell in a sheet. Use case is when user is typing in a cell and leave the excel open with the cursor inside the cell.
    • To post as a guest, your comment is unpublished.
      Rehan · 2 years ago
      Were you able to find a fix for this by any chance?
  • To post as a guest, your comment is unpublished.
    henry · 2 years ago
    Hi Thanks loads for this code. Just one issue. It seems to try to close all open workbooks thus stalls if another workbook close is cancelled or not responded to. have you any touch-ups that can fix this?
    • To post as a guest, your comment is unpublished.
      crystal · 2 years ago
      Hi Henry,
      The code has been updated with the problem solving. Please have a try. Sorry for the inconvenience and thank you for your comment.
    • To post as a guest, your comment is unpublished.
      Gaston · 2 years ago
      I have the same issue... I tried to open a new workbook, and entered some data.... when the time came, both workbooks were closed, but the new one wasn´t saved... Is there a way to fix this?
      Besides that, it works great!! Thanks a lot!!
      • To post as a guest, your comment is unpublished.
        crystal · 2 years ago
        Hi Gaston,
        The code has been updated with the problem solving. Please have a try. Sorry for the inconvenience and thank you for your comment.