Kus*_*kar 11 excel vba excel-vba export-to-excel
如何从.net代码检查是否为Excel应用程序启用了" 信任访问VBA项目对象模型 "?
我可以手动从Excel应用程序 - 文件>选项>信任中心>信任中心设置>宏设置>信任访问VBA项目对象模型进行检查

i_s*_*nes 22
简短的回答是,您无法使用Excel对象模型(即通过PIA)直接访问此设置.但是,您可以从以下位置的注册表中检查此设置(此处我假设您使用的是Office 2007 - 版本12.0):
HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Security\AccessVBOM
Run Code Online (Sandbox Code Playgroud)
这是一个将为0或1的DWORD,具体取决于是否启用了"信任访问VBA对象模型".
但是,此设置可以由位于以下位置的另一个注册表项覆盖:
HKEY_LOCAL_MACHINE\Software\Microsoft\Office\12.0\Excel\Security\AccessVBOM
Run Code Online (Sandbox Code Playgroud)
这又是一个DWORD,但是,如果该值为0,则意味着无论HKCU值设置为什么,都将拒绝访问VBOM.如果HKLM中的值为1或缺失,则HKCU键将控制对VBOM的访问.
因此,您需要做的就是通过.NET中的Registry方法检查这两个键.
小智 5
这对我有用
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
Run Code Online (Sandbox Code Playgroud)