Вот альтернативный способ проверить, если VBA включен без необходимости, чтобы скрыть/показать листы. Проблема со скрытыми/скрытыми листами заключается в том, что рабочий лист можно сохранить в «включенном» состоянии, закрыть без сохранения, а затем снова открыть и не отображать предупреждение.
Создайте следующую функцию в модуле (не рабочий лист или рабочая книга макросов):
Public Function MacrosEnabled()
MacrosEnabled = True
End Function
Теперь, в любой ячейки вы хотите отобразить уведомление относительно того, макросы будут включены или нет, введите следующую формулу :
=IF(ISERROR(MacrosEnabled()&NOW()),"Macros are disabled","Macros are enabled")
Если вы просто использовать ISERROR(MacrosEnabled())
значение не пересчитывается каждый раз при открытии таблицы. Посредством конкатенации NOW()
текущее время считывается каждый раз, когда электронная таблица открывается, и поэтому значение ячейки пересчитывается. Я тестировал этот метод широко, и он очень надежно указывает, включены ли макросы или нет.
Вы можете применить условное форматирование, чтобы сделать ряд вещей, если макросы отключены:
Выделите чек-клетки в ярком цвете, и, возможно, изменить «макросы отключены» текст, чтобы включить инструкции по включению макросов.
«Скрыть» ячейки, значения которых зависят от включения макросов, устанавливая цвет текста и цвет фона одинаковыми.
Here is a spreadsheet that demonstrates this method.
+1 для подхода к регистрации. Я пробовал это раньше с помощью [tag: vbs], и он работал нормально на локальной машине, это, вероятно, также можно выполнить через локальную сеть, подключившись к другим машинам. Но удаленный пользователь должен будет запустить сам код, чтобы установить параметры макроса, поэтому, чтобы получить разрешение, я иду по экрану заставки. – brettdj