错误:通过 VSTO 在 VBE 上添加命令栏时出现“对 Visual Basic 项目的编程访问不受信任”。 (“信任对 VBA 项目的访问……”选中)

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

我正在尝试创建一个 Word VSTO 加载项,永久性地在 VBE 上添加一个命令栏。

环境:

Windows 10、办公室 365

Visual Studio Community 2022(64 位)– 17.5.2,.Net Framework 4.8

我修改了Word主机应用程序中的宏设置如下:

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

我添加了以下参考资料:

Microsoft.Vbe.Interop

VB.NET代码:

Imports Microsoft.Office.Core

Public Class ThisAddIn

    Private Sub ThisAddIn_Startup() Handles Me.Startup
        Dim cb As CommandBar
        cb = Globals.ThisAddIn.Application.VBE.CommandBars.Add("testbar")
        cb.Visible = True
    End Sub

End Class

我研究了这个问题,发现大多数解决方案建议选中“信任对 VBA 项目对象模型的访问”以允许代码工作。

然而,尽管启用了此复选框,我仍然遇到错误消息“对 Visual Basic 项目的编程访问不受信任”。

(我的操作系统语言是繁体中文,虽然我把Visual Studio的语言设置成英文了,但是有些信息还是显示成中文,我已经翻译成英文了。"不信任以程序式设计方式存取Visual Basic专案=Programmatic Access to Visual基本项目不受信任”)

(通过使用VBA代码,我可以在VBE上添加一个命令栏,但它不会永久维护。)

对于解决此问题的任何帮助,我将不胜感激。谢谢。


临时更新:

我做了一些测试,发现以下结果:

即使我没有添加 Eugene Astafiev 提到的组策略注册表项(下图中以红色框突出显示),只要在信任中心选中“信任对 VBA 项目对象模型的访问”,尽管在构建过程中出现错误消息“对 Visual Basic 项目的编程访问不受信任”,但可以成功构建和运行加载项。

不过,这个报错信息还是很烦人

我想知道我是否应该安装 MS Office 组策略管理模板 (ADMX)?

好像跟Eugene Astafiev提到的Group Policy有关

如果有任何发现或问题,我会搜索更多信息并更新。谢谢。

(目前猜测,Office 365中除了Word、Excel、PowerPoint之外,还有很多其他的软件,要不要一一设置,以免报错?)

vba ms-word office365 vsto office-addins
2个回答
1
投票

然而,尽管启用了此复选框,我仍然遇到错误消息“对 Visual Basic 项目的编程访问不受信任”。

您需要检查其他

Trust center
设置以及组策略设置。例如,相应的组策略设置控制 Microsoft Visual Studio Tools for Microsoft Office (VSTO) 等自动化客户端是否可以访问指定应用程序中的 Visual Basic for Applications 项目系统。 VSTO 项目需要访问 Excel、PowerPoint 和 Word 中的 Visual Basic for Applications 项目系统,即使这些项目不使用 Visual Basic for Applications。 Visual Basic 和 C# 项目中控件的设计时支持取决于 Word 和 Excel 中的 Visual Basic for Applications 项目系统。

如果启用此策略设置,VSTO 和其他自动化客户端可以访问指定应用程序中的 Visual Basic for Applications 项目系统。用户将无法通过信任中心宏设置部分下的

Trust access to the VBA project object model
用户界面选项更改此行为。

如果禁用此策略设置,VSTO 将无法以编程方式访问 VBA 项目。此外,

Trust access to the VBA project object model
复选框被清除,用户无法更改它。禁用此策略设置会阻止 VSTO 项目与所选应用程序中的 VBA 项目系统正确交互。

如果不配置此策略设置,自动化客户端将无法以编程方式访问 VBA 项目。用户可以通过选择

Trust access to the VBA project object model
Macro Settings
部分中的
Trust Center
来启用此功能。但是,这样做会允许用户打开的任何文档中的宏访问核心 Visual Basic 对象、方法和属性,这代表了潜在的安全隐患。

注册表蜂巢 HKEY_CURRENT_USER
注册表路径 软件\策略\微软\办公室.0\word\安全
值名称 accessvbom
值类型 REG_DWORD
赋能价值 1
残障值 0

0
投票

每次初始化插件时都会添加命令栏。为此,您必须将插件永久添加到 Word。这可以e。 G。通过使用安装程序项目在 Word 中安装和注册插件来完成。

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