Excel VBA Макросы: Повторное открытие книги с помощью пароля.

Автор Посетитель, 23 июля 2019, 19:00

Посетитель

Возможно в Экселе настроить книгу так, чтобы при повторном открытии необходимо было вводить пароль?

Администратор

1. Этот код нужно поместить в модуль ЭтаКнига (посмотрите, как сделано в приложенном файле).

2. При первом открытии файла, пароль не будет запрошен.
Когда файл будет закрыт, на файл будет установлен пароль. И при следующем открытии будет запрошен пароль для открытия файла.

Макрос
Private Sub Workbook_BeforeClose(Cancel As Boolean)

    '1. Если у файла есть пароль, то не ставим пароль.
    If ThisWorkbook.HasPassword Then Exit Sub
   
    '2. Установка пароля для открытия файла.
    ThisWorkbook.Password = "12345"
   
    '2. Сохранение файла, чтобы пароль сохранился в файле.
        ' Во время сохранения отключаем сообщения, которые иногда появляются
        ' при сохранении файла.
    Application.DisplayAlerts = False
    ThisWorkbook.Save
    Application.DisplayAlerts = True

End Sub
[свернуть]


Примечания

1. Чтобы для программиста пароль не ставился, перед закрытием файла сделайте следующее. Отобразите вкладку "Разработчик" - группа "Элементы управления" - щёлкните "Режим конструктора".
Теперь после закрытия файла, на файл не будет установлен пароль.
Если юзер об этом узнает, то получается сможет как-то обойти защиту.

2. При использовании: Файл - Сведения - Защита книги - Зашифровать с использованием пароля, удаляются макросы из файла. Поэтому во время теста будьте аккуратнее, чтобы не потерять макросы. Для этого делайте копию файла, в котором макросы.

[вложение удалено администратором]


Администратор

Можно придумать что-нибудь другое. Например, перед закрытием файла, макрос будет смотреть имя компьютера. Если компьютер программиста, то макрос не будет ставить пароль.
Макрос может смотреть какой-нибудь файл: если есть заданный файл, то не будет ставить пароль.
Возможно можно ещё что-нибудь придумать, чтобы программисту было удобно создавать файл с паролем.