Запрещен программируемый доступ к проекту на VBA для Office


Проблема


Код, написанный для автоматизации приложений Office и программного манипулирования средой VBA и объектной моделью, может дать сбой при работе в Office, отобразив одно из следующих сообщений об ошибке:

От Visual Basic или VBA:
Ошибка выполнения '6068': Программный доступ к проекту Visual Basic не является доверенным.
От Microsoft Visual C++, Microsoft Foundation Classes (MFC) или ActiveX Template Library (ATL):
HRESULT = 0x800A17B4 (-2146822220) "Программный доступ к проекту Visual Basic не является доверенным"
Тот же самый код будет работать без ошибок на компьютерах с установленным Office 97 и Office 2000.

Причина


Приложение Office добавляет параметр безопасности, который намеренно блокирует программируемый доступ к объектной модели VBA из любого клиента автоматизации, за исключением тех случаев, когда пользователь решает разрешить подобный доступ. Доступ запрещается по умолчанию и разрешается каждым отдельным пользователем для каждого отдельного приложения.

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

Решение


Чтобы любой клиент автоматизации получил доступ к объектной модели VBA программным способом, пользователь, запускающий код, должен предоставить полный доступ. Для включения доступа пользователь должен выполнить следующие действия.

Office 2003 и Office XP

  1. Откройте приложение Office 2003 или Office XP соответственно. В меню Сервис выберите пункт Макрос, а затемБезопасность, чтобы открыть диалоговое окно Безопасность макросов.
  2. Во вкладке Надежные источники установите флажок Доверять доступ к Visual Basic Project.
  3. Нажмите кнопку OK, чтобы изменения вступили в силу. При автоматизации из надстройки Component Object Model или шаблона, возможно, придется перезапустить приложение, чтобы код запустился правильно.

Office 2007

  1. Откройте вызывающее вопросы приложение версии 2007 системы Microsoft Office. Нажмите кнопку Microsoft Office, затем выберите Приложение Параметры.
  2. Перейдите на вкладку Центр доверия и нажмите кнопку Параметры центра доверия.
  3. На вкладке Параметры макроса установите флажок Доверять доступ к объектной модели VBA project и нажмите кнопку OK.
  4. Нажмите кнопку ОК.