Как проверить из кода .net, включен ли «Доверительный доступ к объектной модели проекта VBA» или нет для приложения Excel? - PullRequest
11 голосов
/ 14 марта 2011

Как проверить из кода .net, " Доверенный доступ к объектной модели проекта VBA " включен или нет для приложения Excel?

Вручную Iпроверить это можно из приложения Excel - Файл> Параметры> Центр управления безопасностью> Настройки центра управления безопасностью> Настройки макроса> Доверительный доступ к объектной модели проекта VBA

enter image description here

Ответы [ 4 ]

21 голосов
/ 14 марта 2011

Краткий ответ: вы не можете напрямую получить доступ к этому параметру, используя объектную модель Excel (например, через PIA).Однако вместо этого вы можете проверить этот параметр из реестра в следующем расположении (здесь я предполагаю, что вы используете Office 2007 - версия 12.0):

HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Security\AccessVBOM

это DWORD, который будет 0 или1 в зависимости от того, включен ли «Доверительный доступ к объектной модели VBA».

Однако этот параметр может быть переопределен другим разделом реестра, расположенным по адресу:

HKEY_LOCAL_MACHINE\Software\Microsoft\Office\12.0\Excel\Security\AccessVBOM

, это снова DWORDоднако, если это значение равно 0, это означает, что независимо от того, какое значение HKCU установлено, доступ к VBOM будет запрещен.Если значение в HKLM равно 1 или отсутствует, ключ HKCU будет контролировать доступ к VBOM.

Поэтому все, что вам нужно сделать, это проверить эти два ключа с помощью методов реестра в .NET.

2 голосов
/ 24 ноября 2017

Это сработало для меня

Function VBATrusted() As Boolean
    On Error Resume Next
    VBATrusted = (Application.VBE.VBProjects.Count) > 0
End Function

Private Sub Workbook_Open()
    If Not VBATrusted() Then
    MsgBox "No Access to VB Project" & vbLf & _
      "Please allow access in Trusted Sources" & vbLf & _
      "File > Options > Trust Center > Trust Center Settings > Macro Settings > Trust Access..."
    End If
End Sub

Источник https://www.mrexcel.com/forum/excel-questions/659774-checking-if-trust-access-visual-basic-project-ticked.html

0 голосов
/ 08 февраля 2019

Мой опыт показывает, что Application.VBE будет (в зависимости от версии OFFICE) либо *null*, либо выбрасывать COMException всякий раз, когда VBA объектная модель проекта не является доверенной.1007 * Если в надстройке используется Office.Interop , тогда Globals.ThisAddIn.Application.VBE выполнит необходимый тест.

Я успешно использовал этот прокси в течение многих лет.

0 голосов
/ 09 сентября 2014

Поиск в реестре всех экземпляров "AccessVBOM" и изменение настроек Dword на 1.

. Это должно включить его.

...