Доверять доступ к объектной модели проектов vba excel

Excel для Microsoft 365 Excel 2021 Excel 2019 Excel 2016 Excel 2013 Excel 2010 Excel 2007 Excel Starter 2010 Еще…Меньше

В Excel вы можете изменять параметры безопасности макросов, определяя, какие макросы и при каких обстоятельствах должны выполняться при открытии книги. Например, можно разрешить выполнение макроса в зависимости от наличия цифровой подписи надежного разработчика.

Дополнительные сведения о параметрах безопасности макросов в документах Microsoft Office см. в статье Включение и отключение макросов в файлах Office.

Ниже приведен список различных параметров безопасности макросов. Если установлена антивирусная программа, работающая с Microsoft 365, то помимо всех параметров книга, содержащая макросы, перед открытием проверяется также на наличие известных вирусов.

  • Отключить все макросы без уведомления. Выберите этот параметр, если не доверяете макросам. Все макросы в документе и предупреждения о безопасности макросов отключаются. Если у вас есть документы, содержащие неподписанные макросы, которым вы доверяете, эти документы можно поместить в надежное расположение. Документы из надежных расположений разрешается выполнять без проверки системой центра управления безопасностью.

  • Отключить все макросы с уведомлением. Этот параметр задан по умолчанию. Выберите этот вариант, если хотите отключить макросы, но при этом получать предупреждения о безопасности, если макросы есть. Так вы можете в каждом конкретном случае решать, стоит ли включать эти макросы.

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

  • Включить все макросы (не рекомендуется, возможен запуск опасной программы). Выберите этот параметр, чтобы разрешить выполнение всех макросов. В таком случае ваш компьютер становится уязвимым для потенциально опасного кода, поэтому этот вариант не рекомендуется.

  • Доверять доступ к объектной модели проектов VBA    Этот параметр используется для разработчиков и используется для преднамеренной блокировки или блокировки программного доступа к объектной модели VBA из любого клиента автоматизации. Другими словами, он обеспечивает параметр безопасности для кода, который создается для автоматизации программы Office и программного управления средой и объектной моделью Microsoft Visual Basic для приложений (VBA). Этот параметр настраивается для каждого пользователя и каждого приложения и по умолчанию не имеет доступа. Этот параметр безопасности затрудняет несанкционированный доступ к созданию кода «саморекопирования», который может навредить системам конечных пользователей. Чтобы любой клиент автоматизации мог получить доступ к объектной модели VBA программным путем, пользователь, работающий с кодом, должен явно предоставить доступ. Чтобы включить доступ, выберите этот квадрат.

В Office используется технология Microsoft Authenticode, позволяющая создателям макросов добавлять цифровую подпись в файл или проект макроса. Сертификат, используемый для создания подписи, подтверждает, что макрос или документ создан автором подписи, а подпись подтверждает, что макрос или документ не был изменен.

Установив свой цифровой сертификат, вы можете подписывать файлы и макросы.

Получение цифрового сертификата для подписания

Цифровой сертификат можно получить в коммерческом центре сертификации (ЦС) или у администратора безопасности локальной сети либо ИТ-специалиста.

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

Создание своего самозаверяющего цифрового сертификата

С помощью программы Selfcert.exe вы можете создать свой самозаверяющий сертификат.

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

Дополнительные сведения о добавлении цифровой подписи к макросам см. в статье Подписание макроса.

Изменение параметров безопасности макросов

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

  1. На вкладке Разработчик в группе Код нажмите кнопку Безопасность макросов.

    Вкладка "Разработчик" на ленте

    Чтобы включить вкладку «Разработчик», см. раздел Отображение вкладки «Разработчик».

  2. В категории Параметры макросов в разделе Параметры макросов выберите нужный вариант.

    Примечание: Все изменения, внесенные в категории Параметры макросов в Excel, применяются только к Excel и не влияют на другие приложения Microsoft Office.

Доступ к центру управления безопасностью также можно получить из окна «Параметры Excel». Для этого нажмите кнопку Параметры (Excel 2010–2016) или кнопку Microsoft Office Изображение кнопки Office (Excel 2007), а затем выберите центр управления > Центр управления Параметры >Макрос Параметры.

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

  • Добавление, удаление и изменение надежного расположения

  • Добавление, удаление и просмотр надежного издателя

  • Включение и отключение макросов в файлах Office

  • Включение и отключение предупреждений системы безопасности о ссылках и файлах с подозрительных веб-сайтов

  • Просмотр параметров в центре управления безопасностью

Устранение неполадок

Не удается изменить параметры безопасности макросов

Некоторые пользователи не могут изменять параметры центра управления безопасностью из-за групповых политик безопасности в их организациях. В таких случаях необходимо обратиться к ИТ-администратору организации.

Что случилось с параметрами безопасности «Очень высокий», «Высокий», «Средний» и «Низкий»?

Параметр Excel 2003

Эквивалент в Excel 2007/2010/2013/2016

Дополнительные сведения

Очень высокий

Отключить все макросы без уведомления

В Excel 2003 макросы VBA выполняются только при условии, что выбран параметр «Доверять всем установленным надстройкам и шаблонам» (в Excel 2003 на вкладке «Надежные издатели» в диалоговом окне «Безопасность») и макросы (с подписью или без) хранятся в определенной надежной папке на жестком диске пользователя.

Если эти условия не соблюдены, то при использовании параметра «Очень высокий» макросы VBA не выполняются в Excel 2003.

Высокий

Отключить все макросы кроме макросов с цифровой подписью

В Excel 2003 могут выполняться только исполняемые файлы (EXE или COM), подписанные утвержденным надежным источником (то есть имеющие сертификат). В противном случае все исполняемые модули, связанные с документами или внедренные в них, автоматически отключаются без предупреждения, когда пользователь открывает документы.

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

Средний

Отключить все макросы с уведомлением

В Excel 2003 пользователям при открытии документа предлагается включить или отключить исполняемые модули. На этом уровне необходимо принять сертификат для каждого исполняемого модуля, добавив сертификат в соответствующий сегмент реестра на компьютере под управлением Windows.

Последующие запросы на выполнение макроса от надежного источника принимаются автоматически (исполняемые модули выполняются без предварительного запроса пользователя).

Низкий

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

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

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.

К началу страницы

Нужна дополнительная помощь?

Проблема

Код, написанный для автоматизации приложений 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. Нажмите кнопку ОК.

Нужна дополнительная помощь?

If you want to enable or disable Trust access to Visual Basic Project in Office apps, such as Word, Excel, PowerPoint, etc., you can do so with the help of the in-built option, Local Group Policy Editor, and Registry Editor.

What is Trust access to the VBA project model?

VBA Project Model helps users run various codes from any automation client. At times, you might need to do something in the Excel spreadsheet, and the corresponding option is not present. In such situations, you can use Visual Basic to get things done manually. Many times, such codes may not work correctly until or unless you turn on the Trust access to Visual Basic Project setting.

Note: In every instance, we have used Microsoft Excel for demonstrations. However, you can use Word or PowerPoint as well.

To enable or disable Trust access to Visual Basic Project in Office apps, follow these steps:

  1. Open Microsoft Excel and click on Options.
  2. Switch to the Trust Center tab.
  3. Click the Trust Center Settings button.
  4. Go to the Macro Settings tab.
  5. Tick the Trust access to the VBA project object model checkbox.
  6. Click the OK button.

To know more about these steps, continue reading.

First, you need to open Microsoft Excel or Word or PowerPoint and click the Options visible in the bottom left corner. Then, switch to the Trust Center tab and click on the Trust Center Settings button.

Next, switch to the Macro Settings tab and tick the Trust access to the VBA project object model checkbox.

How to enable or disable Trust access to Visual Basic Project in Office apps

Click the OK button to save the change.

Enable or disable Trust access to Visual Basic Project using Group Policy

To enable or disable Trust access to Visual Basic Project using Group Policy, follow these steps:

  1. Press Win+R to open the Run prompt.
  2. Type gpedit.msc and click the OK button.
  3. Navigate to Trust Center in User Configuration.
  4. Double-click on the Trust access to Visual Basic Project setting.
  5. Choose the Enabled option.
  6. Click the OK button.

Let’s check out these steps in detail.

To get started, press Win+R to display the Run prompt, type gpedit.msc, and click the OK button to open the Local Group Policy Editor. Then, navigate to the following path:

Excel:

User Configuration > Administrative Templates > Microsoft Excel 2016 > Excel Options > Security > Trust Center

Word:

User Configuration > Administrative Templates > Microsoft Word 2016 > Word Options > Security > Trust Center

PowerPoint:

User Configuration > Administrative Templates > Microsoft PowerPoint 2016 > PowerPoint Options > Security > Trust Center

Double-click on the Trust access to Visual Basic Project setting and choose the Enabled option.

How to enable or disable Trust access to Visual Basic Project in Office apps

Alternatively, choose the Disabled option to turn it off.

Click the OK button to save the change.

Turn on or off Trust access to Visual Basic Project using Registry

To turn on or off Trust access to Visual Basic Project using Registry, follow these steps:

  1. Press Win+R > type regedit > hit the Enter button.
  2. Click the Yes option.
  3. Navigate to Microsoftoffice16.0 in HKCU.
  4. Right-click on 16.0 > New > Key and name it as excel.
  5. Right-click on excel > New > Key and name it as security.
  6. Right-click on security > New > DWORD (32-bit) Value.
  7. Set the name as accessvbom.
  8. Double-click on it to set the Value data as 1.
  9. Click the OK button and restart your PC.

To learn more about these steps, continue reading.

For getting started, press Win+R > type regedit and hit the Enter button. If the UAC prompt appears on your screen, click the Yes button.

Then, navigate to the following path:

HKEY_CURRENT_USERSoftwarePoliciesMicrosoftoffice16.0

Right-click on 16.0 > New > Key and name it as excel/word/powerpoint.

How to enable or disable Trust access to Visual Basic Project in Office apps

Repeat the same steps to create a sub-key named security. Then, right-click on security > New > DWORD (32-bit) Value and set the name as accessvbom.

How to enable or disable Trust access to Visual Basic Project in Office apps

Double-click on it to set the value data as 1.

How to enable or disable Trust access to Visual Basic Project in Office apps

Click the OK button and restart your PC. However, if you want to turn this feature off, you have two options. First, you can set the value data as 0 and restart your computer. Second, you can delete the REG_DWORD value and restart your computer.

How do I enable Trust access to the VBA project object model?

There are three different ways to enable Trust access to the VBA project object model, and all the methods are mentioned above. If you do not want to go through several options, you can use the in-built settings panel. On the other hand, you can use the Local Group Policy Editor and the Registry Editor to get it activated.

Read: How to enable or disable Live Preview in Word, Excel, PowerPoint

How do I enable a project in VBA?

To enable Trust access to Visual Basic Project in Excel, Word, or PowerPoint, you need to use the Trust Center Settings. Apart from that, you can use the GPEDIT and REGEDIT methods. In the Group Policy, open the Trust access to Visual Basic Project setting and choose the Enabled option.

Read: How to turn on or off File validation in Word, Excel, PowerPoint.

Не получается запустить макрос vba в проекте c#. Подскажите, что я делаю не так.
Сначала открываю excel файл,а затем прогоняю макрос. Но вылезает ошибка в строке
«oModule = oWb.VBProject.VBComponents.Add(VBA.vbext_ComponentType.vbext_ct_StdModule);»
Программный доступ к проекту Visual Basic не является доверенным

string xlSheetPath = textBox1.Text;
        string ext = xlSheetPath.Substring(xlSheetPath.LastIndexOf("."),
            xlSheetPath.Length - xlSheetPath.LastIndexOf("."));
        int xlVersion = (xlSheetPath.Substring(xlSheetPath.LastIndexOf("."),
            xlSheetPath.Length - xlSheetPath.LastIndexOf(".")) == ".xls") ? 
 8 : 12;

        Microsoft.Office.Interop.Excel._Application xlApp = new 
  Excel.Application();
        xlApp.Visible = true;
        Excel.Workbook workbook = xlApp.Workbooks.Open(xlSheetPath);
        Excel.Worksheet worksheet = workbook.Sheets[1];


        //Где то тут включить макрос.

        Excel.Workbook oWb;
        Excel.Workbooks oWbs;
        Excel.Worksheet oSheet;
        VBA.VBComponent oModule;

        String sCode;

        //xlApp.SheetsInNewWorkbook = 1;
        oWbs = (Excel.Workbooks)xlApp.Workbooks;
        oWb = oWbs.Add(System.Reflection.Missing.Value);
        oSheet = xlApp.Worksheets.Add();
        oModule = 
 oWb.VBProject.VBComponents.Add(VBA.vbext_ComponentType.vbext_ct_StdModule);
        sCode = "Sub copyTable()rn" +
            "Dim colRange As Variantrn" +
            "colRange = Array(1, 2, 3, 4, 5, 6, 7) 'Columns where your data 
  is'rn" +
            "Dim destColRange As Variantrn" +
            "destColRange = Array(10, 11, 12, 13, 14, 15, 16, 17) 'Columns 
  where you want data be copied'rn" +
            "n = UBound(colRange) - LBound(colRange)rn" +
            "i = 2 'Initial row'rn" +
            "newI = irn" +
            "maxLen = 500 'Maximum size allowed in one cell'rn" +
            "While Not (Cells(i, colRange(0)) Is Nothing) And (Cells(i, 
  colRange(0)) <> "")rn" +
            "Text = Cells(i, colRange(n))rn" +
            "Dorn" +
            "For j = 0 To n - 1rn" +
            "Cells(newI, destColRange(j)) = Cells(i, colRange(j))rn" +
            "Next jrn" +
            "Cells(newI, destColRange(j)) = Mid(Text, 1, maxLen)rn" +
            "Text = Mid(Text, maxLen + 1)rn" +
            "newI = newI + 1rn" +
            "Loop Until Len(Text) <= 0rn" +
            "i = i + 1 rn" +
            "Wendrn" +
            "End Subrn";
        oModule.CodeModule.AddFromString(sCode);
        sCode = null;
        xlApp.Run("[copyTable]", Type.Missing, Type.Missing, Type.Missing,
            Type.Missing, Type.Missing, Type.Missing, Type.Missing,
            Type.Missing, Type.Missing, Type.Missing, Type.Missing,
            Type.Missing, Type.Missing, Type.Missing, Type.Missing,
            Type.Missing, Type.Missing, Type.Missing, Type.Missing,
            Type.Missing, Type.Missing, Type.Missing, Type.Missing,
            Type.Missing, Type.Missing, Type.Missing, Type.Missing,
            Type.Missing, Type.Missing, Type.Missing);

….

 

Эмир

Пользователь

Сообщений: 227
Регистрация: 01.01.1970

Доброго времени суток всем.
Подскажите, плиз, кто может, как лучше прописать код к подключению вышеуказанной галочки программным путем. Я знаю, что Microsoft сейчас добавил новый параметр безопасности для блокировки данной возможности. Приведенный код, все же включает эту галку, но выводит сообщение об ошибке из системы, которое не мешает продолжению работы и вроде все красиво, только как вот это сообщение убить??? Помогите советом, плиз.

Иногда только промахнувшись, понимаешь как ты попал.

 

Эмир

Пользователь

Сообщений: 227
Регистрация: 01.01.1970

Забыл сказать, что в пустом файле все работает. В моем, где много кода — пишет — программный доступ к проекту VB не является доверенным.

Иногда только промахнувшись, понимаешь как ты попал.

 

The_Prist

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

Кстати, зачем у Вас в коде Application.DisplayAlerts = True, если Application.DisplayAlerts = False перед ним нет?
Да и iExcelVersion = Application.Version два раза, притом второй совершенно лишний. Как и второй Set oShell = CreateObject(«wscript.shell»). Можно использовать уже созданный WshShell.
И какая версия Excel? У меня лично никаких сообщений. Но и нифига не красиво все(да и не было никогда). Программно можно сделать запись в реестре, но доступ она не открывает пока не перезапустить Excel.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Эмир

Пользователь

Сообщений: 227
Регистрация: 01.01.1970

Дмитрий, спасибо.
Сейчас все посмотрю

Иногда только промахнувшись, понимаешь как ты попал.

 

Эмир

Пользователь

Сообщений: 227
Регистрация: 01.01.1970

Я прочитал, все понял насчет перезагрузки. Свой код убрал. Вставил полностью ваш, но это предупреждение не уходит. Почему оно возникает у меня, если у других его нет??? В чем может быть причина???

Иногда только промахнувшись, понимаешь как ты попал.

 

Эмир

Пользователь

Сообщений: 227
Регистрация: 01.01.1970

2010 excel

Иногда только промахнувшись, понимаешь как ты попал.

 

Эмир

Пользователь

Сообщений: 227
Регистрация: 01.01.1970

А вот сообщение по нему.

Иногда только промахнувшись, понимаешь как ты попал.

 

The_Prist

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

Так сообщение красноречиво. Вы явно пытаетесь получить некое свойство или метод проекта. А доступ не доверенный.
На какой строке кода происходит?

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Эмир

Пользователь

Сообщений: 227
Регистрация: 01.01.1970

Я нашел где ошибка. Возникает там, где я пытаюсь скрыть все панели редактора vbe. Дмитрий на вашем сайте опубликована программа по управлению безопасностью макросов. Она помогла мне, но есть вопрос. Можно ли как-то получить vba код exe-шника, что у вас выложен на сайте??? Мне именно такой код нужен с проверкой под все версии excel.

Иногда только промахнувшись, понимаешь как ты попал.

 

The_Prist

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

У меня там не VBA-шный код, а C.
Поэтому быстро его выдать не получится, т.к. под рукой его нет.
Там меняется ветка реестра HKEY_CURRENT_USERSoftwareMicrosoftOffice12.0ExcelSecurityVBAWarnings»

Только версия 12.0 меняется и для Excel ниже 12.0 не VBAWarnings, а Level.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Эмир

Пользователь

Сообщений: 227
Регистрация: 01.01.1970

Я подумал, что компилированный .xls
Жаль.
Именно level и нужен. Я уже поборол свою ошибку.  

Иногда только промахнувшись, понимаешь как ты попал.

 

Olelucoye

Пользователь

Сообщений: 26
Регистрация: 08.08.2013

А почему бы Вам не включить доверенный доступ скриптом. Заодно можно и екселевский файл запустить.

 

Эмир

Пользователь

Сообщений: 227
Регистрация: 01.01.1970

Потому что у меня в программе только один файл и все остальное он хранит в себе в виде функций vba.

Иногда только промахнувшись, понимаешь как ты попал.

 

Olelucoye

Пользователь

Сообщений: 26
Регистрация: 08.08.2013

А что за проблема, если будет два?

 

Эмир

Пользователь

Сообщений: 227
Регистрация: 01.01.1970

#16

15.11.2013 20:17:46

Компактность, зачем 2, когда можно 1)))

Иногда только промахнувшись, понимаешь как ты попал.

Понравилась статья? Поделить с друзьями:
  • Договор аренды гаража между физическими лицами 2022 образец скачать word
  • Доверительный уровень в excel
  • Договор аренды автомобиля у физического лица в word
  • Доверительный интервал стьюдента в excel
  • Доверительный интервал регрессия excel