如何从.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