Excel VBA: включение настроек макроса - PullRequest
8 голосов
/ 24 февраля 2012

Я написал макро метод для автоматического изменения размера столбцов в листе Excel при открытии листа.Однако это решение не работает в случае, если пользователь не включил макросы в Excel.

Можно ли проверить, отключен ли у пользователя макрос VBA в Excel, а затем включить макросы в Excel VBAкод

Ответы [ 4 ]

13 голосов
/ 24 февраля 2012

Стандартный способ сделать это - заставить пользователя включить макросы с помощью заставки.

  • Все листы в книге, кроме заставки, сделаны очень скрыт (который можно изменить только через VBA или редактор VBA)
  • если включены макросы:
    1) Когда книга открывается, код показывает все эти очень скрытые листы
    2) Когда рабочая тетрадь закрывается, все эти листы становятся очень скрытыми снова
  • Если макросы не включены, то пользователь может видеть только заставку со словами «Пожалуйста, включите макросы, закройте и снова откройте этот файл»

Ниже приведены две ссылки с полным кодом для этой техники

  1. Брэд Юндт покрывает это здесь, в TekTips
  2. Jonske на VBAeXpress
3 голосов
/ 07 октября 2014

Вот альтернативный метод проверки, включен ли VBA, без необходимости скрывать / показывать листы.Проблема со скрытием / отображением листов заключается в том, что лист можно сохранить в состоянии «включено», закрыть без сохранения, а затем снова открыть и не отображать предупреждение.

Создайте в модуле следующую функцию (не макрокоманду или таблицу):

Public Function MacrosEnabled()
    MacrosEnabled = True
End Function

Теперь в любой ячейке вы хотите отобразить уведомление о том, включены макросы или нет,введите следующее уравнение:

=IF(ISERROR(MacrosEnabled()&NOW()),"Macros are disabled","Macros are enabled")

Если вы просто используете ISERROR(MacrosEnabled()), то значение не пересчитывается при каждом открытии электронной таблицы.Путем объединения NOW() текущее время считывается каждый раз, когда открывается электронная таблица, и поэтому значение ячейки пересчитывается.Я тщательно протестировал этот метод, и он, похоже, очень надежно указывает, включены макросы или нет.

Затем вы можете применить условное форматирование, чтобы сделать несколько вещей, если макросы отключены:

  • Выделите чек-ячейку ярким цветом и, возможно, измените "«Макросы отключены» - текст, содержащий инструкции по включению макросов.

  • «Скрыть» ячейки, значения которых зависят от того, включены ли макросы, путем установки одинакового цвета текста и фона.

Вот таблица, демонстрирующая этот метод .

3 голосов
/ 24 февраля 2012

Это функция безопасности. Если бы вы могли отключить его в Excel в vba, это бы победило цель. Боюсь, ответ - нет, пользователю нужно будет изменить настройки безопасности ...

Вы можете изменить настройки из другого приложения, изменив реестр

0 голосов
/ 02 марта 2012

Существует способ автоматизировать включение макроса, но вам нужно иметь полный контроль над клиентским компьютером хотя бы один раз. Используя цифровые сертификаты и подписывая свои макросы с ним, при первом запуске макросов с подписью Excel предложит вам всегда доверять макросам, подписанным этим, или нет. Когда вы доверяете этому, все макросы, подписанные вашим сертификатом, будут автоматически включены.

Это лучший вариант для разработки и управления макросами в корпоративной сети.

Извините за ошибки. Мой английский еще не совершенен. ;)

Привет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...