макрос для защиты книги от открытия без макросов

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
aleks_af
Сообщения: 1
Зарегистрирован: 16 мар 2011, 15:17

Проблема в следующем:
Нужем макрос или несколько, для того чтобы при открытии файла Excel не отображались все листы, а только лист с надписью ну что-то на подобии "ЭТА КНИГА РАБОТАЕТ ТОЛЬКО ПРИ ВКЛЮЧЕННЫХ МАКРОСАХ". и на этом листе кнопочка для включения макросов. Если это возможно. либо просто не давать доступа пока не запустится файл с включенными макросами, но чтобы все листы были защищены. Разрешение на проведение ввода данных с плавающей кнопки ввода пароля для доступа к листу.
nilem
Сообщения: 112
Зарегистрирован: 14 ноя 2008, 01:59
Откуда: Уфа

Допустим, в книге 2 листа: Лист1 - с надписью "ЭТА КНИГА РАБОТАЕТ...", а Лист2 разрешается увидеть только при включенных макросах.
В модуль ЭтаКнига пишем:

Код: Выделить всё

Private Sub Workbook_Open()
Sheets("Лист2").Visible = -1
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Sheets("Лист2").Visible = 2
End Sub
SAS888
Сообщения: 156
Зарегистрирован: 16 янв 2008, 08:28

nilem
А что не позволит пользователю открывать книгу, предотвращая выполнение макроса Workbook_Open (удежривая "Shift")? Кроме того, если книга содержит макросы, то при ее открытии, если они отключены, Excel сам об этом "скажет".
aleks_af
...и на этом листе кнопочка для включения макросов. Если это возможно.
Если речь идет о переключении режима безопасности макросов, то программно (по нажатию кнопки на листе) этого сделать невозможно.
nilem
Сообщения: 112
Зарегистрирован: 14 ноя 2008, 01:59
Откуда: Уфа

SAS888
Книгу с отключенными макросами открыть можно. Но в этом случае
...для того чтобы при открытии файла Excel не отображались все листы, а только лист с надписью...
Лист2 будет "очень скрытый".
По крайней мере, так задумывалось.
SAS888
Сообщения: 156
Зарегистрирован: 16 янв 2008, 08:28

Лист2 будет "очень скрытый". По крайней мере, так задумывалось.
Ну, во-первых, это только часть задачи. Во-вторых, скрытие "секретного" листа нужно делать не при закрытии книги, а по событию сохранения Workbook_BeforeSave. Это, конечно, может мешать работе пользователя, но иначе никак.
Ответить