Добрый день! Друзья, проблема такая. Есть файл который в общем доступе. Есть куча менеджеров с короткой памятью, которые открывают файл и сидят в нем и ничего не делают. Есть ли возможность с помощью макроса ограничить времени посиделок в файле до 10 минут. По истечению данного времени, файл сохраняется и закрывается?
Добрый день! Друзья, проблема такая. Есть файл который в общем доступе. Есть куча менеджеров с короткой памятью, которые открывают файл и сидят в нем и ничего не делают. Есть ли возможность с помощью макроса ограничить времени посиделок в файле до 10 минут. По истечению данного времени, файл сохраняется и закрывается?VIDEO56
Друзья, я бы посоветовал вам не исключать возможности того, что некоторые менеджеры всё же работают, и даже через 10 минут. И за внезапное закрытие файла при внесении данных - докладная будет на ТС, с лишением премий и бонусов, как минимум...
Друзья, я бы посоветовал вам не исключать возможности того, что некоторые менеджеры всё же работают, и даже через 10 минут. И за внезапное закрытие файла при внесении данных - докладная будет на ТС, с лишением премий и бонусов, как минимум... AndreTM
на самом деле, до идеала далеко... Первое, что подумалось – это отсутствие удаления таймера. Т.е., если добросовестный менеджер закроет файл сам, то по истечении 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 минуты он сам закроется.
на самом деле, до идеала далеко... Первое, что подумалось – это отсутствие удаления таймера. Т.е., если добросовестный менеджер закроет файл сам, то по истечении 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
Всем привет. Есть ли возможность исправить недочет: если в файле открыта ячейка для редактирования(просто стоит в ней курсор, но ничего не правится), тогда закрытия файла не происходит.
Всем привет. Есть ли возможность исправить недочет: если в файле открыта ячейка для редактирования(просто стоит в ней курсор, но ничего не правится), тогда закрытия файла не происходит.Dim_Shu
VIDEO56, перерыл все форумы, но в итоге пришлось сделать самому, понадобилось по работе.
Настраиваем автоматическое закрытие Excel файла при отсутствии активности пользователя в течение определенного времени. Очень часто в повседневной деятельности нам приходится командой работать с Excel файлом, который находится в общем доступе на сетевом диске. В случае, если файл содержит умные таблицы, то предоставление общего доступа через Review->Share Workbook не представляется возможным из-за ограничений самого Excel. Это порождает проблему блокирования рабочего файла, если один забывчивый сотрудник оставил файл открытым после небольших коррекций и ушёл, например, обедать, а второму сотруднику срочно нужно внести в файл новую информацию. Примеров Вы сами можете вспомнить огромное количество. Ну что же, приступим! Задача: Необходимо обеспечить автоматическое сохранение и закрытие файла после бездействия пользователя. При этом пользователь может вносить коррекции в файл, а потом бездействовать, либо просто открыть файл и ничего не делать. Под действием мы понимаем изменение любого диапазона ячеек (удаление значений, ввод новых данных и т.д.) на конкретном листе книги. Решение: В целом, чтобы выполнить все условия задачи необходимо будет использовать метод .OnTime. Он запускает таймер на выполнение процедуры закрытия файла. При этом нужно будет прерывать действие запущенного таймера при внесении новых изменений, и запускать его заново. Теперь конкретно. Для начала приведу код, а потом всё объясню. Приложенный Excel - макра, Word - описание.
VIDEO56, перерыл все форумы, но в итоге пришлось сделать самому, понадобилось по работе.
Настраиваем автоматическое закрытие Excel файла при отсутствии активности пользователя в течение определенного времени. Очень часто в повседневной деятельности нам приходится командой работать с Excel файлом, который находится в общем доступе на сетевом диске. В случае, если файл содержит умные таблицы, то предоставление общего доступа через Review->Share Workbook не представляется возможным из-за ограничений самого Excel. Это порождает проблему блокирования рабочего файла, если один забывчивый сотрудник оставил файл открытым после небольших коррекций и ушёл, например, обедать, а второму сотруднику срочно нужно внести в файл новую информацию. Примеров Вы сами можете вспомнить огромное количество. Ну что же, приступим! Задача: Необходимо обеспечить автоматическое сохранение и закрытие файла после бездействия пользователя. При этом пользователь может вносить коррекции в файл, а потом бездействовать, либо просто открыть файл и ничего не делать. Под действием мы понимаем изменение любого диапазона ячеек (удаление значений, ввод новых данных и т.д.) на конкретном листе книги. Решение: В целом, чтобы выполнить все условия задачи необходимо будет использовать метод .OnTime. Он запускает таймер на выполнение процедуры закрытия файла. При этом нужно будет прерывать действие запущенного таймера при внесении новых изменений, и запускать его заново. Теперь конкретно. Для начала приведу код, а потом всё объясню. Приложенный Excel - макра, Word - описание.nilidan
nilidan, забыл сделать блокировку сохранения и закрытия для случая, если файл открыт в режиме read only, оно там не нужно совсем. Обновленные файлики прикрепляю. В принципе можно сделать закрытие, но без сохранения, иначе excel Будет предлагать сохранить файл с новым именем, что нам не надо. Для этого нужно поместить условия с ThisWorkbook.ReadOnly в процедуры Wbclose.
nilidan, забыл сделать блокировку сохранения и закрытия для случая, если файл открыт в режиме read only, оно там не нужно совсем. Обновленные файлики прикрепляю. В принципе можно сделать закрытие, но без сохранения, иначе excel Будет предлагать сохранить файл с новым именем, что нам не надо. Для этого нужно поместить условия с ThisWorkbook.ReadOnly в процедуры Wbclose.nilidan
С вашего позволения хотел бы поднять тему. А как в этом же коде включить принуждение использования макросов. До того активная книга должна быть скрыта. Я так понимаю, если юзер не включит этого, то и код не сработает.
С вашего позволения хотел бы поднять тему. А как в этом же коде включить принуждение использования макросов. До того активная книга должна быть скрыта. Я так понимаю, если юзер не включит этого, то и код не сработает.draginoid
Здравствуйте. Понимаю, что не совсем тот раздел, но очень надо А как будет выглядеть аналогичный макрос для access? там же нет "эта книга". У меня открывается форма при открытии access, человек пишет куда поехал и по кнопке сохранить файл сохраняется и access закрывается. но иногда люди забывают нажать сохранить и файл висит открытый. Таймер бы очень помог.
Здравствуйте. Понимаю, что не совсем тот раздел, но очень надо А как будет выглядеть аналогичный макрос для access? там же нет "эта книга". У меня открывается форма при открытии access, человек пишет куда поехал и по кнопке сохранить файл сохраняется и access закрывается. но иногда люди забывают нажать сохранить и файл висит открытый. Таймер бы очень помог.zoommist