Книга НЕ в общем доступе (вкладка Рецензирование-Доступ к книге, снята галка "Разрешать изменять файл нескольким пользователям").
Если такая книга открыта, то другой пользователь, открывающий книгу, видит сообщение:
Пользователь игнорирует его, меняет/форматирует, через какое-то время пытается сохранить свою работу... не тут-то было! А спешить надо медленно.. Надо внимательно читать предупреждение. И такая ситуация не выдуманная - обратились с просьбой решить проблему.
Для таких вот быстрых придумалась простенькая доработка. Авось кому-то еще понадобится.
Возможный недостаток: автосохранение книги при закрытии (не всегда это нужно). Имена пользователей должны быть разные.
Смысл такой.
Ячейка для сообщения. При закрытии книги пользователем, который открыл ее первым, ячейка очищается, т.е. в закрытой книге ячейка пустая.
Открывается закрытая книга. Макрос проверяет ячейку. Там пусто, в ячейку заносится сообщение "В книге работает Вася", книга сохраняется.
Открывается открытая книга. Макрос проверяет ячейку. Ячейка заполнена, значит, менять там ничего не нужно.
Результат: сообщение всегда показывает имя пользователя, который открыл книгу первым. И если уж при этом товарищ будет терять время - его проблема )
В модуль ЭтаКнига
В общий модуль
ws0 - внутреннее имя листа, можно заменить на видимое: Worksheets("лист1")
Если такая книга открыта, то другой пользователь, открывающий книгу, видит сообщение:
Пользователь игнорирует его, меняет/форматирует, через какое-то время пытается сохранить свою работу... не тут-то было! А спешить надо медленно.. Надо внимательно читать предупреждение. И такая ситуация не выдуманная - обратились с просьбой решить проблему.
Для таких вот быстрых придумалась простенькая доработка. Авось кому-то еще понадобится.
Возможный недостаток: автосохранение книги при закрытии (не всегда это нужно). Имена пользователей должны быть разные.
Скрытый текст |
---|
Смысл такой.
Ячейка для сообщения. При закрытии книги пользователем, который открыл ее первым, ячейка очищается, т.е. в закрытой книге ячейка пустая.
Открывается закрытая книга. Макрос проверяет ячейку. Там пусто, в ячейку заносится сообщение "В книге работает Вася", книга сохраняется.
Открывается открытая книга. Макрос проверяет ячейку. Ячейка заполнена, значит, менять там ничего не нужно.
Результат: сообщение всегда показывает имя пользователя, который открыл книгу первым. И если уж при этом товарищ будет терять время - его проблема )
В модуль ЭтаКнига
Код |
---|
Private Sub Workbook_Open() With ws0 If .Range("K2").Value = "" Then .Range("K2").Value = "В книге работает" & Chr$(10) & Application.UserName End If End With Call SaveBook End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) ws0.Range("K2:K14").ClearContents Call SaveBook End Sub |
В общий модуль
Код |
---|
Sub SaveBook() Application.DisplayAlerts = False ThisWorkbook.Save Application.DisplayAlerts = True End Sub |
ws0 - внутреннее имя листа, можно заменить на видимое: Worksheets("лист1")