Возможности Excel в VBA просто поразительны. VBA – это полноценный язык программирования, а это значит, что с ним можно делать все, что угодно. Некоторые даже написали целые приложения на VBA; приложения, основанные на среде Excel для выполнения конкретной задачи.
Если вы написали такую систему, вы, несомненно, полагаетесь на автоматические макросы, которые запускаются при первом запуске Excel или открытии рабочая тетрадь. Эти макросы обычно используются для настройки среды Excel и запуска приложения. Прискорбно думать, что кто-то может отключить всю вашу систему, просто удерживая клавишу Shift при открытии книги. (Удерживание клавиши Shift отключает любой из автоматических макросов, связанных с книгой.)
В Excel нет способа отключить обход запуска с помощью клавиши Shift. макросы. Причина проста – безопасность. Если бы эту функцию можно было заблокировать или отключить, макровирусы могли бы начать работать, и пользователь не мог бы что-либо с этим поделать. Это было бы очень плохо.
Одно из возможных решений – запретить книге делать что-либо полезное, если запускаемые макросы не разрешены. Рабочий лист по умолчанию, который отображается при открытии книги, должен сказать что-то о том, что книга должна быть открыта с включенными макросами для правильной работы. Затем пользователю может быть предложено закрыть книгу и повторить попытку.
В этом состоянии по умолчанию для других листов в книге можно установить «очень скрытое» состояние. Это делается путем установки для свойства Visible каждого листа значения xlSheetVeryHidden. С этим набором свойств рабочие листы нельзя сделать видимыми вручную; это можно сделать только через VBA.
Если пользователь открывает книгу и макросы успешно запускаются, они могут скрыть рабочий лист по умолчанию или просто удалить его. Затем макрос может отображать «очень скрытые» рабочие листы, если это необходимо, чтобы реализовать приложение желаемым образом.
Источник: