Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.11.2012, 20:26   #1
ru3000
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 163
По умолчанию Таймер простоя. Возможно?

Всем привет. Помогите с непростой задачей.

Есть документ excel с кучей всевозможных макросов и наворотов. Но дело не в этом. Дело в том, что с этим документом работают несколько пользователей по сети. Пока один что-то там делает в документе, остальные могут открывать его только для чтения. Бывает, что первый кто открыл этот документ забывает его закрыть и уходит, например домой. Естественно начинают дергать меня, типа че за фигня, не можем редактировать документ. Приходиться лезть по удаленке и закрывать этот документ у забывчивого пользователя.
Так вот мой вопрос: как можно организовать, чтобы даже если документ и оставили открытым, то он бы сам закрывался через определенное время простоя с обязательным сохранением данных. Возможно ли сделать это средствами VB, написать эдакий таймер простоя с автосохранением.

Сразу скажу, чти никакой другой метод совместной работы с документами меня не устраивает. Ни какие синхронизации разных версий одного и того же документа, ни какие тупые онлайн сервисы, типа Zoho Sheet, ни какие безумные решения от Microsoft за бешеные деньги. Ничего. Есть один документ, который должен редактироваться по очереди. И точка.

Буду признателен за наводку в каком направлении двигаться.
ru3000 вне форума Ответить с цитированием
Старый 01.11.2012, 21:22   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Попробуйте в модуль книги (т.е. объекта ЭтаКнига или ThisWorkbook)
Код:
Private Const DELAY = #12:05:00 AM# '5 минут, можно вводить #0:5:0#

Private next_time

Private Sub CloseMe()
Me.Close True
End Sub

Private Sub Workbook_Open()
ResetTimer
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
ResetTimer
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
ResetTimer
End Sub

Private Sub ResetTimer()
On Error Resume Next
Application.OnTime next_time, "ThisWorkbook.CloseMe", , False
next_time = Now + DELAY
Application.OnTime next_time, "ThisWorkbook.CloseMe"
End Sub
Переименуйте объект ЭтаКнига в ThisWorkbook на панели свойств, или в последней процедуре поменяйте ThisWorkbook на ЭтаКнига (или как он у Вас называется).
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 01.11.2012, 21:45   #3
ru3000
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 163
По умолчанию

Вы Гений!
Мерси. А то я уже начал привлекать сторонние программы для этого дела.
Еще раз благодарю.
ru3000 вне форума Ответить с цитированием
Старый 01.11.2012, 21:47   #4
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

в большинстве случаев метод будет работать, но если пользователь оставит открытой книгу на этапе ввода/корректирования значения ячейки - никакой макрос не будет выполняться ...
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Старый 01.11.2012, 22:02   #5
ru3000
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 163
По умолчанию

Упс, вы прямо меня обескуражили. Выходит что без сторонних программ никак не обойтись?
ru3000 вне форума Ответить с цитированием
Старый 01.11.2012, 22:12   #6
ru3000
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 163
По умолчанию

Погодите, т.е. в данном случае макрос вообще не начнет отчет времени с момента простоя если пользователь оставил документ на этапе ввода/корректирования значения ячейки? Или же макрос все таки отсчитает указанное время, но просто не сможет закрыть/сохранить документ?

PS Сам отвечу на свой вопрос: вообще не начнет отчет времени.
Печально конечно. Может есть способ это победить?

Последний раз редактировалось ru3000; 01.11.2012 в 22:19.
ru3000 вне форума Ответить с цитированием
Старый 02.11.2012, 08:42   #7
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

При редактировании ячейки выполнение макросов блокируется, так что либо сторонние средства использовать, либо делайте ввод через юзерформы
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 02.11.2012, 09:02   #8
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

А к серваку, на котором этот файл лежит, есть доступ?
Если есть, можно на него установить программку, которая будет отслеживать активность этого файла, типа "занят"-"не занят".
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 02.11.2012, 11:50   #9
ru3000
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 163
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
А к серваку, на котором этот файл лежит, есть доступ?
Если есть, можно на него установить программку, которая будет отслеживать активность этого файла, типа "занят"-"не занят".
Да, доступ к серверу есть. А вот что за программы вы советуете использовать? Что-то ничего подобного не попадалось. Если не трудно, дайте наводку пожалуйста.
ru3000 вне форума Ответить с цитированием
Старый 02.11.2012, 12:45   #10
ru3000
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 163
По умолчанию

О, придумал. Нужна утиль, которая будет следить за бездействием компьютера и, например, через 10 минут простоя будет отправлять в открытый документ Excel нажатие клавиши "End" или "Esc", что в свою очередь закончит редактирование ячейки в таблице (если таковое присутствует) и соответственно активирует запуск макроса с таймером простоя уже внутри самого Excel. Как-то так. Думаю написать программульку на VB.
ru3000 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Время работы и простоя оборудования TimurG Microsoft Office Excel 6 14.03.2013 18:22
Подсчет времени простоя Venique Microsoft Office Excel 3 20.02.2012 07:13
Простоя условия mavlon_m SQL, базы данных 3 08.12.2011 12:02
Использование видеокарты во время простоя Рубик2 Win Api 1 06.10.2011 15:51
Время от простоя до разъединения sinobithug Компьютерное железо 0 28.04.2011 02:15