如何从 .net 代码检查“信任对 VBA 项目对象模型的访问”是否有效对于 Excel 应用程序是否启用?
如何从 .net 代码检查 Excel 应用程序是否启用了“信任对 VBA 项目对象模型的访问”?
我可以从 Excel 应用程序手动检查它 - 文件>选项>信任中心>信任中心设置>宏设置>信任对 VBA 项目对象模型的访问
How to check from .net code whether "Trust access to the VBA project object model" is enabled or not for an Excel application?
Manually I can check it from Excel application- File>Options>Trust Center>Trust Center Settings>Macro Settings>Trust access to the VBA project object model
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
简而言之,您无法使用 Excel 对象模型(即通过 PIA)直接访问此设置。
但是,您可以从以下位置的注册表中检查此设置(此处我假设您使用的是 Office 2007 - 版本 12.0):
这是一个 DWORD,将为 0 或 1,具体取决于“信任访问VBA 对象模型”已启用。
但是,此设置可以被位于以下位置的另一个注册表项覆盖:
这又是一个 DWORD,但是,如果此值为 0,则意味着无论 HKCU 值设置为什么,对 VBOM 的访问都将被拒绝。如果 HKLM 中的值为 1 或缺失,则 HKCU 密钥将控制对 VBOM 的访问。
因此,您所需要做的就是通过.NET 中的注册表方法检查这两个键。
The short answer is that you cannot directly access this setting using the Excel object model (i.e. through PIAs).
However, instead, you can check this setting from the registry in the following location (here I assume that you're using Office 2007 - version 12.0):
this is a DWORD that will be 0 or 1 depending on whether the "Trust access to VBA Object Model" is enabled.
However, this setting can be overriden by another registry key located at:
this is again a DWORD, however, if this value is 0 this means that no matter what the HKCU value is set to, then access to the VBOM will be denied. If the value in HKLM is 1 or missing, then the HKCU key will control the access to the VBOM.
Therefore, all you need to do is to check these two keys via the Registry methods in .NET.
这对我有用
来源 https://www.mrexcel.com/forum/excel-questions/659774-checking-if-trust-access-visual-basic-project-ticked.html
This worked for me
Source https://www.mrexcel.com/forum/excel-questions/659774-checking-if-trust-access-visual-basic-project-ticked.html
在注册表中搜索“AccessVBOM”的所有实例,并将 Dword 设置更改为 1。
这应该将其打开。
Search the registry for all instances of "AccessVBOM" and change the Dword settings to a 1.
That should turn it on.
根据我的经验,只要 Application.VBE 将(取决于 OFFICE 版本)为
*null*
或抛出COMException
>VBA 项目对象模型不受信任。如果在加载项中使用 Office.Interop,则 Globals.ThisAddIn.Application.VBE 将执行必要的测试。
我已经成功使用这个代理多年了。
It has been my experience that
Application.VBE
will (depending on OFFICE version) either be*null*
or throw aCOMException
whenever the VBA Project Object Model is not trusted.If one is using Office.Interop in an Add-In then
Globals.ThisAddIn.Application.VBE
will perform the necessary test.I have used this proxy for years successfully.
此代码检查 VBA 对象模型是否可信。如果不是,代码将打开“宏设置”对话框,这样用户就不必导航到它。
This code checks if the VBA object model is trusted. If it is not, the code opens the Macro Setting dialog so the user doesn't have to navigate to it.