Страница 1 из 1

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

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

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

Добавлено: 16 мар 2011, 17:59
nilem
Допустим, в книге 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

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

Добавлено: 17 мар 2011, 06:45
SAS888
nilem
А что не позволит пользователю открывать книгу, предотвращая выполнение макроса Workbook_Open (удежривая "Shift")? Кроме того, если книга содержит макросы, то при ее открытии, если они отключены, Excel сам об этом "скажет".
aleks_af
...и на этом листе кнопочка для включения макросов. Если это возможно.
Если речь идет о переключении режима безопасности макросов, то программно (по нажатию кнопки на листе) этого сделать невозможно.

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

Добавлено: 17 мар 2011, 08:08
nilem
SAS888
Книгу с отключенными макросами открыть можно. Но в этом случае
...для того чтобы при открытии файла Excel не отображались все листы, а только лист с надписью...
Лист2 будет "очень скрытый".
По крайней мере, так задумывалось.

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

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