Программный доступ к проекту Visual Basic не является доверенным в Excel 2016

Обновлено: 03.07.2024

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

Верно. Вы можете сделать макрос, который записывает больше макросов. Через несколько дней я покажу вам, как это сделать!

Метод, который я покажу вам сегодня, — это лишь один из нескольких способов использования макроса для обеспечения доверенного доступа к объектной модели проекта VBA. Этот метод использует SendKeys, чтобы попытаться выполнить трюк, но другим распространенным методом является настройка самого реестра для переключения доступа к объектной модели. Как я уже говорил, SendKeys работает нестабильно, поэтому не удивляйтесь, если он не работает в 100 % случаев.

Вопрос этики

Этот макрос намного длиннее, чем нужно. Причина этого в том, что я считаю нарушение этических норм автоматическим включением/отключением доступа к объектной модели проекта VBA для пользователя без его/ее согласия.

Буду с вами предельно честен. Недобросовестные люди могут злоупотреблять кодом, который я собираюсь представить, чтобы получить доступ к объектной модели и написать макросы для внедрения вирусов, червей и других вредоносных программ на чей-либо компьютер. Не будьте одним из таких людей.

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

Еще одна причина, по которой этот макрос длиннее, чем должна быть, заключается в том, что я не просто проверяю, хочет ли пользователь разрешить мне доступ к объектной модели. Я также проверяю, хочет ли он/она, чтобы я отозвал доступ. Опять же, вы можете изменить это, чтобы принудительно разрешить доступ, но по этическим соображениям вам придется над этим поработать. Извините!

Пример — объектная модель проекта VBA

Макрос для переключения доверительного доступа к объектной модели проекта VBA

Создавайте мощные макросы с помощью нашего бесплатного комплекта разработчика VBA

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

Как использовать этот макрос

Это руководство является частью моей серии "Библиотека кода", поэтому я не буду подробно объяснять, как оно работает, но расскажу, как использовать макрос.

Макрос, который вы хотите запустить, называется CheckTrustAccess . Однако, поскольку этот макрос использует функцию SendKeys, не запускайте его непосредственно из редактора VBA. Все, что он будет делать, это печатать символы на вашем экране, например:

SendKeys from Редактор VBA

Вы не хотите этого делать… Вместо этого вам нужно переключиться в Excel и открыть окно макросов (сочетание клавиш Alt-F8), выбрать CheckTrustAccess и нажать «Выполнить».

Как вручную включить/отключить доверительный доступ к объектной модели проекта VBA

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

  1. Откройте приложение Excel.
  2. Нажмите «Файл» -> «Параметры» -> «Центр управления безопасностью» -> «Настройки центра управления безопасностью».
  3. Нажмите "Настройки макроса".
  4. Переключите флажок "Доверять доступ к объектной модели проекта VBA".

Если вы сомневаетесь, не устанавливайте этот флажок. Unchecked — это вариант по умолчанию, и он самый безопасный с точки зрения безопасности и уязвимости. Вот снимок экрана, который поможет вам выбрать правильное направление:

Включить доверительный доступ к объектной модели проекта VBA

На этом уроке все. Поделитесь этой статьей со всем миром в Twitter и Facebook!

Когда вы будете готовы вывести свой VBA на новый уровень, подпишитесь, заполнив форму ниже.

Готовы делать больше с VBA?
Мы собрали гигантский PDF-файл с более чем 300 готовыми макросами и хотим, чтобы вы получили его бесплатно. Введите свой адрес электронной почты ниже, и мы вышлем вам копию вместе с нашим комплектом разработчика VBA, полным советов, приемов и ярлыков VBA.

Прежде чем мы начнем, я хочу сообщить вам, что мы разработали набор шпаргалок по VBA, чтобы вам было проще писать лучшие макросы. Мы включили более 200 советов и 140 примеров макросов, поэтому в них есть все, что вам нужно знать, чтобы стать лучшим программистом VBA.

Когда я пытаюсь запустить следующий код, я получаю сообщение "Ошибка времени выполнения 1004 Программный доступ к проекту Visual Basic не является доверенным". Кто-нибудь знает, как изменить настройку или обойти эту ошибку?
Sub CreateButton()
Тусклый объект как объект
Тусклый код как строка
Листы ("Лист1"). Выберите
'кнопку создания
Установить объект = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", _
Ссылка:=False, DisplayAsIcon:=False, Left:=200, Top:=100, Width:=100, Height:= 35)
Obj.Name = "TestButton"
'текст кнопки
ActiveSheet.OLEObjects(1).Object.Caption = "Test Button"
'macro text
Code = "Sub ButtonTest_Click()" & vbCrLf
Code = Code & "Call Tester" & vbCrLf
Code = Code & "End Sub"
'добавить макрос в конец модуля листа
С ActiveWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule
.insertlines .CountOfLines + 1, код
End With
End Sub
Sub Tester() < br />MsgBox "Вы нажали на тестовую кнопку"
End Sub

Факты об Excel

Используйте =ПРОПИСН() для верхнего регистра, =НИЖНИЙ() для нижнего регистра и =ПРОПИСНОЙ() для правильного регистра. PROPER не будет использовать вторую букву "c" в слове "Маккартни"

MrExcel MVP
  1. 2019
  2. 2016
  3. 2010
    1. Окна

    Excel 2003:
    1. Откройте соответствующее приложение Office 2003 или Office XP. В меню «Инструменты» выберите «Макрос», а затем нажмите «Безопасность», чтобы открыть диалоговое окно «Безопасность макросов».
    2. На вкладке Надежные источники установите флажок Доверять доступ к Visual Basic Project, чтобы включить доступ.
    3. Нажмите OK, чтобы применить настройку. Вам может потребоваться перезапустить приложение, чтобы код работал правильно, если вы выполняете автоматизацию из надстройки или шаблона модели компонентных объектов (COM).

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

    Это сообщение может появиться при доступе к объектам с помощью макроса и/или при попытке создать отчет FSR целиком и при выборе параметра "Выполнить макрос".

    Решение проблемы

    <р>1. В меню «Инструменты» выберите «Макрос», а затем нажмите «Безопасность».
    2. Перейдите на вкладку «Надежные издатели».
    3. Установите флажок рядом с Доверять доступ к Visual Basic Project и нажмите кнопку ОК.
    4. Закройте все приложения Office и повторите попытку.

    <р>1. Откройте Excel 2007
    2. Нажмите кнопку Office (самая верхняя левая кнопка в окне)
    3. Нажмите кнопку «Параметры Excel».
    4. Щелкните Центр управления безопасностью в меню слева.
    5. Нажмите «Настройки центра управления безопасностью» в окне справа.
    6. В открывшемся новом окне нажмите «Макросы» в меню слева.
    7. Установите флажок рядом с Доверять доступ к объектной модели проекта VBA.
    8. Нажмите «ОК».
    9. Нажмите "ОК".

    <р>1. Щелкните вкладку "Файл" (самая верхняя левая вкладка в окне)
    2. Нажмите кнопку «Параметры Excel».
    3. Щелкните Центр управления безопасностью в меню слева.
    4. Нажмите «Настройки центра управления безопасностью» в окне справа.
    5. В открывшемся новом окне нажмите «Настройки макроса» в меню слева.
    6. Установите флажок рядом с Доверять доступ к объектной модели проекта VBA.
    7. Нажмите «ОК».
    8. Нажмите "ОК".

    Если указанные выше параметры выполнены, но ошибка не устранена, убедитесь, что кнопки «Visual Basic» и «Макрос» не отображаются серым цветом на ленте разработчика в Excel. Если они выделены серым цветом, это означает, что некоторые функции Excel отключены из-за того, что «Visual Basic для приложений» недоступен или отключен на уровне системной политики.

    Это можно решить одним из двух способов:

    <р>1. Переустановите Office и в процессе установки убедитесь, что в качестве параметра установки выбран «Visual Basic для приложений».
    2. Убедитесь, что для параметра «Отключить VBA для приложений Office» не задана системная политика или групповая политика (GPO).

    Для получения дополнительной информации об этом поведении см. следующую статью Microsoft KB, 282847.

    Если вы когда-либо сталкивались с ошибкой выполнения 1004: программный доступ к Visual Basic Project не является доверенной ошибкой при запуске макроса, эта статья поможет вам исправить ее. Макросы — это код, который автоматизирует работу в Программе. Когда вы создаете макрос, вы записываете клики мыши и нажатия клавиш. Вы можете запускать или редактировать макрос в любое время. Вы можете добавить свои собственные крошечные функции и улучшения, чтобы помочь. Макросы помогают пользователям автоматизировать задачи, они заменяют действия, которые вы выполняете вручную. И это помогает пользователю ускорить свою работу, особенно потому, что Excel используется во многих рабочих процессах. Excel использует встроенный инструмент для написания макросов, называемый редактором Visual Basic или сокращенно редактором VBA.Откройте редактор VBA, нажав Alt + F11 для окон и Fn + Shift + F11 для MAC. Как только вы нажмете клавишу быстрого доступа, вы получите отдельное всплывающее окно для редактора VBA.

    Ошибка 1004: Программный доступ к Visual Basic Project недоверен:

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

    Выполните следующие действия, чтобы включить эту опцию.

    Откройте пустую книгу Excel. Выберите «Файл» > «Параметры» > «Центр управления безопасностью»

    .

    Центр управления безопасностью

    Нажмите "Настройки центра управления безопасностью"

    .

    Ошибка 1004: Программный доступ к Visual Basic Project не является доверенным

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

    Ошибка 1004: программный доступ к проекту Visual Basic не является доверенным

    После того, как вы включите доверительный доступ к объектной модели проекта VBA, перезапустите Excel один раз и попытайтесь запустить макросы, в основном это решит проблему.

    Оставить комментарий Отменить ответ

    Этот сайт использует Akismet для уменьшения количества спама. Узнайте, как обрабатываются данные ваших комментариев.

    Читайте также: