E_ACCESSDENIED "General Access denied error" /CreateObject("Vbscript") 在 office 365 VBA 环境下被阻止

问题描述

我最近遇到了在 Access 2016 和 office 365 中运行代码的问题。我们编写的 COM 组件无法与较新版本的 office 一起使用。我能够附加调试器并确认尝试创建 VBA 的 VBScript INSIDE 实例(我们的 COM 对象在内部使用 Vbscript 在我们通过 Access VBA 调用的项目上执行代码)在我们的 COM 对象内部调用 CoCreateInstance 时返回 E_ACCESSDENIED。早在 2013 年之前的 Office 版本都可以正常工作。

如果你只是运行:

Dim tst As Object
Set tst = CreateObject("VBScript")
If Not (tst Is nothing) Then
    MsgBox "good"
Else
    MsgBox "Bad"
End IF

在超过 2013 年的任何东西上的 Excel 或 Access VBA 中,我得到: CreateObject("VBScript") 行上的“运行时错误 '70':权限被拒绝” VBScript CreateObject error message

这段代码在 office 2013 下对我来说也执行得很好。

我尝试了以下方法

  1. 设置 ActiveX 设置以启用所有(在“Tust Center”下)
  2. 启用所有宏(在“Tust Center”下)
  3. 使用此处列出的说明始终禁用“沙盒”: https://support.microsoft.com/en-us/office/turn-sandbox-mode-on-or-off-to-disable-macros-8cc7bad8-38c2-4a7a-a604-43e9a7bbc4fb

有谁知道我是否可以在 office 中更改某种设置以允许从 office 365 VBA 环境中实例化 vbscript 实例? 我在网上搜索过类似的问题,但目前没有发现任何有用的信息。

解决方法

所以多亏了 sous2817,我才能够找到我真正需要的东西。虽然它可能不是所有情况下最安全的方法,但它应该对我有用。 我还发现了这 2 个链接,一旦我指向正确的方向,我就会使用这些链接:

https://support.microsoft.com/en-us/topic/security-settings-for-com-objects-in-office-b08a031c-0ab8-3796-b8ec-a89f9dbb443d

https://docs.microsoft.com/en-us/office365/troubleshoot/updates/control-block-ole-com

基本上我必须破例以防止 MS Office 阻止 VBScript。