Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для NickM

Ветеран


Contributor


Сообщения: 4635
Благодарности: 1115

Профиль | Отправить PM | Цитировать


corbis, извините Меня, но смогу подержать Вас только теорией.
Ситуацию вижу так: определиться каким образом открыта книга:
1. Локально, в единственном сеансе пользователя - тогда и решение простое. Ввиду того, что в сеансе у приложения Эксель может быть одновременно открыта одна единственная книга/файл с одинаковым именем независимо от пути, то просто закрыть книгу по имени с сохранением внесенных изменений;
2 и 3. Книга открыта в терминальной сессии и/или с др. компьютера сети как книга общего доступа. Тут уже сложнее. Здесь придется с помощью кода VBA узнать имя пользователя/пользователей работающих с книгой, после с помощью системных, сторонних утилит(например от sysinternals) определить сессию/компьютер на котором залогинен пользователь занявший книгу, которому в последствии отправить сообщение. Также следует учесть/отвести время на реакцию пользователя после чего, при неисполнении требуемого действия предусмотреть возможность принудительного закрытия книги. А вот тут еще один момент - с помощью системных, сторонних утилит приложение в сессии/на удаленном компьютере можно просто "кильнуть", но ессно о никакой сохранности речи не идет, если сохранность нужна по зарез можно и заморочиться и реализовать ее.

Отправлено: 22:32, 14-08-2015 | #6