Уважаемые гуру!
Помогите, пожалуйста, решить проблему.
На сервере в общем доступе лежит популярная у пользователей книга (телефонный справочник).
Чтобы она не оставалась доступной для редактирования только одному, открывшему её первым, сделал таймер для автозакрытия книги:
______________________________________
Public Sub Auto_Open()
a = Time
b = 0.00347 'Выдержка пять минут
iTime = a + b
Application.OnTime EarliestTime:=iTime, Procedure:="Workbook_Close"
End Sub
__________________________________
...........
__________________________________
Private Sub Workbook_Close()
Application.DisplayAlerts = False
Application.EnableEvents = False 'Запрещает обработку события "Private Sub Workbook_BeforeClose(Cancel As Boolean)"
ThisWorkbook.Close
End Sub
_________________________________
Когда книга находится на локальной машине - все работает на отлично.
Но когда оана в папке общего доступа на сервере - закрывается и открывается раз по 10-15.
Доходит счетчик до уставки, книга начинает закрываться, потом появляется окно сообщения "Открытие книги... бла-бла-бла" книга открывается и опять начинает закрываться. И процесс повторяется неоднократно.
Что я не так сделал?
Автозакрытие книги Excel по таймеру
Модератор: Naeel Maqsudov
Вообще-то, для того, чтобы одну книгу могли редактировать несколько человек одновременно, её достаточно сделать общей. В XL97-2003 это можно сделать следующим образом, в меню Сервис выбрать команду Доступ к книге, в появившемся стандартном диалогом окне Управление доступом к файлу выделить закладку Правка и установить "флажок" напротив Разрешить совместный доступ, после чего подтвердить свои намерения.
Что касается таймера, то можно попробовать использовать что-то вроде :
модуль ThisWorkbook(ЭтаКнига)
Что касается таймера, то можно попробовать использовать что-то вроде :
модуль ThisWorkbook(ЭтаКнига)
Код: Выделить всё
Private iTime As Date
Private Sub Workbook_Open()
iTime = DateAdd("n", 5, Now)
Application.OnTime EarliestTime:=iTime, Procedure:=Me.CodeName & ".Workbook_Close"
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnTime EarliestTime:=iTime, Procedure:=Me.CodeName & ".Workbook_Close", Schedule:=False
End Sub
Private Sub Workbook_Close()
'Application.DisplayAlerts = False
Application.EnableEvents = False 'Запрещает обработку всех событий, в т.ч. и BeforeClose()
Me.Close saveChanges:=True
Application.EnableEvents = True
End Sub
Спасибо огромное!
Все работает.
Один раз, правда, переоткрывается, но по крайней мере не зацикливается.
А общий доступ к книге я открывал. Но при закрытии такой книги задается вопрос о том, чью версию сохранить. Это вообще пользователей в тупик ставит.
Уж лучше так.
Все работает.
Один раз, правда, переоткрывается, но по крайней мере не зацикливается.
А общий доступ к книге я открывал. Но при закрытии такой книги задается вопрос о том, чью версию сохранить. Это вообще пользователей в тупик ставит.
Уж лучше так.