【问题标题】:Programmatic Access To Visual Basic Project Is Not Trusted对 Visual Basic 项目的编程访问不受信任
【发布时间】:2014-10-27 14:26:02
【问题描述】:

我的计算机上有两个计划任务。它们都打开 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


    【解决方案1】:

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

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

    【讨论】:

    • + 1 还关闭了要移至超级用户的问题 :)
    • 你如何以编程方式做到这一点?
    • 请注意,这是系统管理员可以使用组策略锁定的内容。
    【解决方案2】:

    使用 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. http://docs.activestate.com/activepython/2.4/pywin32/win32api__RegSetValueEx_meth.html
    2. http://docs.activestate.com/activepython/2.4/pywin32/win32api__RegOpenKeyEx_meth.html

    【讨论】:

    • 我很高兴有人能告诉我注册路径,这样我就可以进行大规模部署了!谢谢你。 Set-ItemProperty -path HKCU:\Software\Microsoft\Office\16.0\Excel\security -Name "AccessVBOM" -Value 1
    • 请参阅stackoverflow.com/a/25235214/6302131 了解从 VBA 执行此操作的方法
    【解决方案3】:

    Mac 版本 - 过去在 Mac 版本上没有此设置。你确实总是有一个对话说这件事。

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

    顺便说一句,它是安全的,而不是信任的。

    HTH

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-29
      • 2011-02-05
      • 1970-01-01
      • 1970-01-01
      • 2014-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多