Как избавиться от предупреждения безопасности VBA - PullRequest
8 голосов
/ 07 июля 2010

Я разработал приложение Access, используя VBA.Каждый раз, когда я открываю Access up, я получаю следующее:

https://lh5.googleusercontent.com/wgn5B5PllVXGuG6W4_xiFa1rouSpDSn27MC0nzPkgJ5CPN8BKpAn-gDFsVS4GZtepY-c4jtbEupKeV227ogICQlzcg=s512

Мне нужно нажать Параметры -> Включить содержимое , чтобы запустить моймакросы.Это приложение будет распространяться среди нескольких людей на работе, которые не так разбираются в технологиях.Итак, согласно требованиям, я должен удалить его.Я пытался подписать / упаковать базу данных, но она все равно не избавилась от предупреждения.

Ответы [ 5 ]

11 голосов
/ 07 июля 2010

Для этого необходимо добавить местоположение, из которого запускается Excel, в «Надежные расположения».

Для этого выполните следующие действия:

  • В Excel выберите «Центр управления безопасностью», а затем «Надежные расположения»
  • Добавьте местоположение.

Это должно быть сделано для каждого ПК.

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

Также небольшая заметка: если вы подпишете файл Excel, вам все равно понадобится, чтобы получатель доверял вам как издателю, поэтому ваше решение, вероятно, не сработало.

Редактировать:

Принимая во внимание комментарии, кажется, есть способ сделать это программно. Взято из XpertsExchange,

Почему бы просто не установить запись реестра из кода, не вызывая Shell? Используйте класс cRegistry, найденный здесь:

http://www.vbaccelerator.com/home/VB/Code/Libraries/Registry_and_Ini_Files/Complete_Registry_Control/article.asp

Код VBA:

 Dim c As New cRegistry
    With c
        .ClassKey = HKEY_CURRENT_USER
        .SectionKey = "Software\Microsoft\Office\12.0\Access\Security\Trusted Locations\YourTrustedLocationName"
        .ValueKey = "Path"
        .ValueType = REG_DWORD
        .Value = "Full path to Trusted Folder"
    End With

Единственное предостережение в том, что YourTrustedLocationname должно быть уникальным ...

Вам нужно будет попробовать, если это будет .ValueType = REG_DWORD или REG_SZ. Я не уверен в этом.

7 голосов
/ 13 апреля 2016

Хотя этому вопросу уже много лет, на всякий случай он может помочь, вот что я сделал. Это другой подход к уже предложенным, и он может служить кому-то еще. В моем случае MsAccess не был открыт непосредственно пользователем. Вместо этого MsAccess был запущен с использованием автоматизации из другого пользовательского приложения. Поэтому вместо того, чтобы пользователь нажимал «Включить содержимое», мы заставили это пользовательское приложение сообщить MsAccess о необходимости включения макросов. Нечто похожее на это:

cli = create_object("Access.Application")
cli.AutomationSecurity = 1                # 1 = msoAutomationSecurityLow
cli.visible = true
cli.opencurrentdatabase("c:/Users/jmperez/AppData/Local/Temp/DB_TMP.mdb")

(извините за приведенный выше код, он не из "стандартного" или "популярного" языка программирования, но его не должно быть сложно адаптировать к Visual Basic или чему-либо еще)

3 голосов
/ 07 июля 2010

Это опция для каждого пользователя.Каждый должен будет «доверять» вашей книге.

В Excel нажмите кнопку меню и выберите «Параметры Excel».В этом окне выберите «Центр управления безопасностью», а затем «Настройки центра управления безопасностью».В этом окне выберите Надежные расположения.

На этом экране вы, возможно, захотите установить флажок «Разрешить надежные расположения в моей сети», а затем нажмите «Добавить местоположение» и добавьте сетевое местоположение своей книги.

2 голосов
/ 07 июля 2010

Ваш макрос подписан доверенным лицом.

0 голосов
/ 30 августа 2011

Я создал проект установки с Visual Studio 2010 (в рамках проектов установки и развертывания).В рамках этого проекта вы настраиваете установку / копирование приложения MS Access в «C: \ Ntapps \ MsOffice \ Office12 \ ACCWIZ \».Это папка для доверенных баз данных.Затем создайте ярлык для приложения MS Access и установите его в нужном месте.

Когда все в порядке и установка завершена, MS Access (в конфигурации по умолчанию) теперь доверяет базе данных.

Удачи;)

Грц, Том

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