如何从.net代码检查是否启用了“信任访问VBA项目对象模型”的Excel应用程序?

如何从.net代码检查是否启用了“ 信任访问VBA项目对象模型 ”的Excel应用程序?

手动我可以从Excel应用程序中检查它 – 文件>选项>信任中心>信任中心设置>macros设置>信任访问VBA项目对象模型

在这里输入图像说明

简单的答案是,您不能使用Excel对象模型(即通过PIA)直接访问此设置。 但是,相反,您可以从以下位置的registry中检查此设置(这里我假设您使用的是Office 2007 – 版本12.0):

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

这是一个DWORD,取决于是否启用“信任访问VBA对象模型”,它将为0或1。

但是,此设置可以被位于以下位置的另一个registry项重写:

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

这又是一个DWORD,但是,如果这个值是0,这意味着不pipeHKCU值设置为什么,那么访问VBOM将被拒绝。 如果HKLM中的值是1或缺失,则HKCU键将控制对VBOM的访问。

因此,所有你需要做的就是通过.NET中的registry方法来检查这两个键。

在registry中search“AccessVBOM”的所有实例,并将Dword设置更改为1。

这应该打开它。

这对我有效

 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