Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Автоматическое сохранение и закрытие файла по таймеру - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Автоматическое сохранение и закрытие файла по таймеру (Макросы/Sub)
Автоматическое сохранение и закрытие файла по таймеру
VIDEO56 Дата: Среда, 19.08.2015, 12:50 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 262
Репутация: 23 ±
Замечаний: 0% ±

Excel 2010
Добрый день!
Друзья, проблема такая. Есть файл который в общем доступе. Есть куча менеджеров с короткой памятью, которые открывают файл и сидят в нем и ничего не делают. Есть ли возможность с помощью макроса ограничить времени посиделок в файле до 10 минут. По истечению данного времени, файл сохраняется и закрывается?


Всем удачного дня!
 
Ответить
СообщениеДобрый день!
Друзья, проблема такая. Есть файл который в общем доступе. Есть куча менеджеров с короткой памятью, которые открывают файл и сидят в нем и ничего не делают. Есть ли возможность с помощью макроса ограничить времени посиделок в файле до 10 минут. По истечению данного времени, файл сохраняется и закрывается?

Автор - VIDEO56
Дата добавления - 19.08.2015 в 12:50
Саня Дата: Среда, 19.08.2015, 13:07 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация: 560 ±
Замечаний: 0% ±

XL 2016
в модуле "ЭтаКнига":
[vba]
Код
Private Sub Workbook_Open()
     SetTask
End Sub
[/vba]

в стандартном модуле:
[vba]
Код
Sub SetTask()
     Application.OnTime Now + TimeSerial(0, 10, 0), "WbClose"
End Sub

Sub WbClose()
     ThisWorkbook.Save
     ThisWorkbook.Close
End Sub
[/vba]
К сообщению приложен файл: 7625240.xls (24.5 Kb)
 
Ответить
Сообщениев модуле "ЭтаКнига":
[vba]
Код
Private Sub Workbook_Open()
     SetTask
End Sub
[/vba]

в стандартном модуле:
[vba]
Код
Sub SetTask()
     Application.OnTime Now + TimeSerial(0, 10, 0), "WbClose"
End Sub

Sub WbClose()
     ThisWorkbook.Save
     ThisWorkbook.Close
End Sub
[/vba]

Автор - Саня
Дата добавления - 19.08.2015 в 13:07
KSV Дата: Среда, 19.08.2015, 13:10 | Сообщение № 3
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
Добрый день!
В модуль книги: [vba]
Код
Private Sub Workbook_Open()
      Application.OnTime Now + #12:10:00 AM#, "TimeOut"
End Sub
[/vba]

В стандартный модуль: [vba]
Код
Private Sub TimeOut()
      ThisWorkbook.Close True
End Sub
[/vba]
К сообщению приложен файл: AutoClose.xlsm (12.4 Kb)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333


Сообщение отредактировал KSV - Среда, 19.08.2015, 13:11
 
Ответить
СообщениеДобрый день!
В модуль книги: [vba]
Код
Private Sub Workbook_Open()
      Application.OnTime Now + #12:10:00 AM#, "TimeOut"
End Sub
[/vba]

В стандартный модуль: [vba]
Код
Private Sub TimeOut()
      ThisWorkbook.Close True
End Sub
[/vba]

Автор - KSV
Дата добавления - 19.08.2015 в 13:10
AndreTM Дата: Среда, 19.08.2015, 13:26 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
Друзья, я бы посоветовал вам не исключать возможности того, что некоторые менеджеры всё же работают, и даже через 10 минут. И за внезапное закрытие файла при внесении данных - докладная будет на ТС, с лишением премий и бонусов, как минимум... killed


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеДрузья, я бы посоветовал вам не исключать возможности того, что некоторые менеджеры всё же работают, и даже через 10 минут. И за внезапное закрытие файла при внесении данных - докладная будет на ТС, с лишением премий и бонусов, как минимум... killed

Автор - AndreTM
Дата добавления - 19.08.2015 в 13:26
VIDEO56 Дата: Среда, 19.08.2015, 13:34 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 262
Репутация: 23 ±
Замечаний: 0% ±

Excel 2010
AndreTM, вот в том то и дело, что более 5 минут в файле ловить нечего.


Всем удачного дня!
 
Ответить
СообщениеAndreTM, вот в том то и дело, что более 5 минут в файле ловить нечего.

Автор - VIDEO56
Дата добавления - 19.08.2015 в 13:34
VIDEO56 Дата: Среда, 19.08.2015, 13:40 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 262
Репутация: 23 ±
Замечаний: 0% ±

Excel 2010
Спасибо други. Работает все идеально!


Всем удачного дня!
 
Ответить
СообщениеСпасибо други. Работает все идеально!

Автор - VIDEO56
Дата добавления - 19.08.2015 в 13:40
KSV Дата: Среда, 19.08.2015, 18:07 | Сообщение № 7
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
некоторые менеджеры всё же работают, и даже через 10 минут
думал об этом, но не стал усложнять себе задачу, раз ТС об этом не написал :)

Работает все идеально!
на самом деле, до идеала далеко...
Первое, что подумалось – это отсутствие удаления таймера. Т.е., если добросовестный менеджер закроет файл сам, то по истечении 10 минут файл снова откроется, для выполнения процедуры, указанной в таймере, и сразу же закроется. Чтобы этого избежать в модуль книги поместите: [vba]
Код
Dim DateTime As Date

Private Sub Workbook_Open()
     DateTime = Now + #12:10:00 AM#
     Application.OnTime DateTime, "TimeOut"
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
     On Error Resume Next
     Application.OnTime DateTime, "TimeOut", , False
End Sub
[/vba]

А чтобы не прервать работу менеджера в неподходящий момент (вдруг, он откроет файл и пойдет пить кофе, а через 9 минут вернется и начнет заполнять файл :) ), можно чуть изменить логику. Например, закрывать файл не через 10 мин. после открытия, а через 2 мин. бездействия.
Для этого в коде события Workbook_Open() измените время таймаута (например, на 2 мин. – это #12:02:00 AM#) и добавьте в модуль листа код для еще одного события: [vba]
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
     Workbook_BeforeClose False
     Workbook_Open
End Sub
[/vba] Тогда при каждом изменении в файле, старый таймер будет сбрасываться, а новый устанавливаться, и файл не закроется пока в нем работают (что-то меняют). А как только перестанут менять, так через 2 минуты он сам закроется.
К сообщению приложен файл: 8794290.xlsm (14.3 Kb)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщение
некоторые менеджеры всё же работают, и даже через 10 минут
думал об этом, но не стал усложнять себе задачу, раз ТС об этом не написал :)

Работает все идеально!
на самом деле, до идеала далеко...
Первое, что подумалось – это отсутствие удаления таймера. Т.е., если добросовестный менеджер закроет файл сам, то по истечении 10 минут файл снова откроется, для выполнения процедуры, указанной в таймере, и сразу же закроется. Чтобы этого избежать в модуль книги поместите: [vba]
Код
Dim DateTime As Date

Private Sub Workbook_Open()
     DateTime = Now + #12:10:00 AM#
     Application.OnTime DateTime, "TimeOut"
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
     On Error Resume Next
     Application.OnTime DateTime, "TimeOut", , False
End Sub
[/vba]

А чтобы не прервать работу менеджера в неподходящий момент (вдруг, он откроет файл и пойдет пить кофе, а через 9 минут вернется и начнет заполнять файл :) ), можно чуть изменить логику. Например, закрывать файл не через 10 мин. после открытия, а через 2 мин. бездействия.
Для этого в коде события Workbook_Open() измените время таймаута (например, на 2 мин. – это #12:02:00 AM#) и добавьте в модуль листа код для еще одного события: [vba]
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
     Workbook_BeforeClose False
     Workbook_Open
End Sub
[/vba] Тогда при каждом изменении в файле, старый таймер будет сбрасываться, а новый устанавливаться, и файл не закроется пока в нем работают (что-то меняют). А как только перестанут менять, так через 2 минуты он сам закроется.

Автор - KSV
Дата добавления - 19.08.2015 в 18:07
Dim_Shu Дата: Среда, 16.03.2016, 15:01 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Всем привет.
Есть ли возможность исправить недочет: если в файле открыта ячейка для редактирования(просто стоит в ней курсор, но ничего не правится), тогда закрытия файла не происходит.
 
Ответить
СообщениеВсем привет.
Есть ли возможность исправить недочет: если в файле открыта ячейка для редактирования(просто стоит в ней курсор, но ничего не правится), тогда закрытия файла не происходит.

Автор - Dim_Shu
Дата добавления - 16.03.2016 в 15:01
nilidan Дата: Воскресенье, 28.04.2019, 21:54 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 1 ±
Замечаний: 0% ±

Excel 2016
VIDEO56, перерыл все форумы, но в итоге пришлось сделать самому, понадобилось по работе.

Настраиваем автоматическое закрытие Excel файла при отсутствии активности пользователя в течение определенного времени.
Очень часто в повседневной деятельности нам приходится командой работать с Excel файлом, который находится в общем доступе на сетевом диске. В случае, если файл содержит умные таблицы, то предоставление общего доступа через Review->Share Workbook не представляется возможным из-за ограничений самого Excel. Это порождает проблему блокирования рабочего файла, если один забывчивый сотрудник оставил файл открытым после небольших коррекций и ушёл, например, обедать, а второму сотруднику срочно нужно внести в файл новую информацию. Примеров Вы сами можете вспомнить огромное количество.
Ну что же, приступим!
Задача: Необходимо обеспечить автоматическое сохранение и закрытие файла после бездействия пользователя. При этом пользователь может вносить коррекции в файл, а потом бездействовать, либо просто открыть файл и ничего не делать. Под действием мы понимаем изменение любого диапазона ячеек (удаление значений, ввод новых данных и т.д.) на конкретном листе книги.
Решение:
В целом, чтобы выполнить все условия задачи необходимо будет использовать метод .OnTime. Он запускает таймер на выполнение процедуры закрытия файла. При этом нужно будет прерывать действие запущенного таймера при внесении новых изменений, и запускать его заново.
Теперь конкретно. Для начала приведу код, а потом всё объясню.
Приложенный Excel - макра, Word - описание.
К сообщению приложен файл: DontHold.xlsm (18.8 Kb) · DontHold_Macro.docx (28.3 Kb)


Сообщение отредактировал nilidan - Воскресенье, 28.04.2019, 21:55
 
Ответить
СообщениеVIDEO56, перерыл все форумы, но в итоге пришлось сделать самому, понадобилось по работе.

Настраиваем автоматическое закрытие Excel файла при отсутствии активности пользователя в течение определенного времени.
Очень часто в повседневной деятельности нам приходится командой работать с Excel файлом, который находится в общем доступе на сетевом диске. В случае, если файл содержит умные таблицы, то предоставление общего доступа через Review->Share Workbook не представляется возможным из-за ограничений самого Excel. Это порождает проблему блокирования рабочего файла, если один забывчивый сотрудник оставил файл открытым после небольших коррекций и ушёл, например, обедать, а второму сотруднику срочно нужно внести в файл новую информацию. Примеров Вы сами можете вспомнить огромное количество.
Ну что же, приступим!
Задача: Необходимо обеспечить автоматическое сохранение и закрытие файла после бездействия пользователя. При этом пользователь может вносить коррекции в файл, а потом бездействовать, либо просто открыть файл и ничего не делать. Под действием мы понимаем изменение любого диапазона ячеек (удаление значений, ввод новых данных и т.д.) на конкретном листе книги.
Решение:
В целом, чтобы выполнить все условия задачи необходимо будет использовать метод .OnTime. Он запускает таймер на выполнение процедуры закрытия файла. При этом нужно будет прерывать действие запущенного таймера при внесении новых изменений, и запускать его заново.
Теперь конкретно. Для начала приведу код, а потом всё объясню.
Приложенный Excel - макра, Word - описание.

Автор - nilidan
Дата добавления - 28.04.2019 в 21:54
nilidan Дата: Вторник, 30.04.2019, 20:36 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 1 ±
Замечаний: 0% ±

Excel 2016
nilidan, забыл сделать блокировку сохранения и закрытия для случая, если файл открыт в режиме read only, оно там не нужно совсем. Обновленные файлики прикрепляю. В принципе можно сделать закрытие, но без сохранения, иначе excel Будет предлагать сохранить файл с новым именем, что нам не надо. Для этого нужно поместить условия с ThisWorkbook.ReadOnly в процедуры Wbclose.
К сообщению приложен файл: 8535495.xlsm (16.1 Kb) · 8995076.docx (29.6 Kb)


Сообщение отредактировал nilidan - Вторник, 30.04.2019, 20:36
 
Ответить
Сообщениеnilidan, забыл сделать блокировку сохранения и закрытия для случая, если файл открыт в режиме read only, оно там не нужно совсем. Обновленные файлики прикрепляю. В принципе можно сделать закрытие, но без сохранения, иначе excel Будет предлагать сохранить файл с новым именем, что нам не надо. Для этого нужно поместить условия с ThisWorkbook.ReadOnly в процедуры Wbclose.

Автор - nilidan
Дата добавления - 30.04.2019 в 20:36
shevazp Дата: Среда, 05.06.2019, 08:26 | Сообщение № 11
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
ребята вы мне просто богом посланы, СПАСИБО!

p.s. вроде сразу работало, а теперь эррорит, причем не только этот документ а все документы на ПК... Пойду офис переставлю


Сообщение отредактировал shevazp - Среда, 05.06.2019, 09:41
 
Ответить
Сообщениеребята вы мне просто богом посланы, СПАСИБО!

p.s. вроде сразу работало, а теперь эррорит, причем не только этот документ а все документы на ПК... Пойду офис переставлю

Автор - shevazp
Дата добавления - 05.06.2019 в 08:26
draginoid Дата: Среда, 26.05.2021, 11:19 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
С вашего позволения хотел бы поднять тему.
А как в этом же коде включить принуждение использования макросов. До того активная книга должна быть скрыта.
Я так понимаю, если юзер не включит этого, то и код не сработает.
 
Ответить
СообщениеС вашего позволения хотел бы поднять тему.
А как в этом же коде включить принуждение использования макросов. До того активная книга должна быть скрыта.
Я так понимаю, если юзер не включит этого, то и код не сработает.

Автор - draginoid
Дата добавления - 26.05.2021 в 11:19
Serge_007 Дата: Среда, 26.05.2021, 14:00 | Сообщение № 13
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Здравствуйте

как в этом же коде включить принуждение использования макросов
Принуждение кого? Юзера? Или макросы отключены? Если отключены - то никак


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеЗдравствуйте

как в этом же коде включить принуждение использования макросов
Принуждение кого? Юзера? Или макросы отключены? Если отключены - то никак

Автор - Serge_007
Дата добавления - 26.05.2021 в 14:00
draginoid Дата: Среда, 26.05.2021, 14:50 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Имею в виду вариант, если отключены макросы, то и видеть рабочие листы не может юзер.
 
Ответить
СообщениеИмею в виду вариант, если отключены макросы, то и видеть рабочие листы не может юзер.

Автор - draginoid
Дата добавления - 26.05.2021 в 14:50
zoommist Дата: Вторник, 07.06.2022, 17:16 | Сообщение № 15
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

Здравствуйте. Понимаю, что не совсем тот раздел, но очень надо :)
А как будет выглядеть аналогичный макрос для access?
там же нет "эта книга".
У меня открывается форма при открытии access, человек пишет куда поехал и по кнопке сохранить файл сохраняется и access закрывается. но иногда люди забывают нажать сохранить и файл висит открытый. Таймер бы очень помог.
 
Ответить
СообщениеЗдравствуйте. Понимаю, что не совсем тот раздел, но очень надо :)
А как будет выглядеть аналогичный макрос для access?
там же нет "эта книга".
У меня открывается форма при открытии access, человек пишет куда поехал и по кнопке сохранить файл сохраняется и access закрывается. но иногда люди забывают нажать сохранить и файл висит открытый. Таймер бы очень помог.

Автор - zoommist
Дата добавления - 07.06.2022 в 17:16
artashsaribekyan Дата: Пятница, 23.02.2024, 16:47 | Сообщение № 16
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

2016
Здравствуйте, можете мне помоч? Мне нужно чтобы по истечении определенного (20 секунд) времени, файл сохранился но не закрывался.


Арташес
 
Ответить
СообщениеЗдравствуйте, можете мне помоч? Мне нужно чтобы по истечении определенного (20 секунд) времени, файл сохранился но не закрывался.

Автор - artashsaribekyan
Дата добавления - 23.02.2024 в 16:47
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Автоматическое сохранение и закрытие файла по таймеру (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!