对 Visual Basic 项目的编程访问不受信任

问题描述 投票:0回答:3

我的计算机上有两个计划任务。它们都打开 Excel 文件并运行宏,并且它们的功能非常相似。它们都在我的电脑上运行。不过,我将计划任务移至同事的计算机上。一个有效,另一个无效。

不起作用的那个打开了 Excel,但出现错误:

“对 Visual Basic 项目的编程访问不受信任”。

就像我说的,两个 Excel 文件非常相似。那个不起作用的项目确实引用了另外两个项目,而另一个则没有。他们是,

Microsoft Visual Basic for Applications Extensibility 5.3
Microsoft Windows Common Controls-2.6.0 (SP6)

我以前从未遇到过这个错误。

vba excel programmatically-created
3个回答
121
投票

文件 -> 选项 -> 信任中心 -> 信任中心设置 -> 宏设置 -> 信任对 VBA 项目对象模型的访问。

enter image description here

enter image description here

如果您引用可扩展性库,这通常是需要的。


8
投票

使用 Mark Hammond 的

pywin32
模块在 Python 中非常容易做到这一点。

@user2140173 的上述帖子实际上所做的是更改一些注册表值。这可以通过

pywin32
模块以编程方式完成,如下所示:

import win32api
import win32con

key = win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER,
                            "Software\\Microsoft\\Office\\16.0\\Excel"
                            + "\\Security", 0, win32con.KEY_ALL_ACCESS)
win32api.RegSetValueEx(key, "AccessVBOM", 0, win32con.REG_DWORD, 1)

参考资料:

  1. win32api__RegSetValueEx_meth
  2. win32api__RegOpenKeyEx
  3. pywin32 - GitHub
  4. pywin32 - 更多“文档”

5
投票

Mac 版本 - 过去 Mac 版本上没有此设置。你确实总是会收到一个对话来说明这一点。

但现在,至少在 16.30 版本中,不知道多久前,Mac 用户可以使用相同的设置。

顺便说一句,它处于安全状态,而不是信任状态。

HTH

screenshot privacy trust VBA object model

© www.soinside.com 2019 - 2024. All rights reserved.