gpt4 book ai didi

vba - 以编程方式调出 Excel 的 "Trust Center Settings"对话框

转载 作者:行者123 更新时间:2023-12-02 07:28:24 26 4
gpt4 key购买 nike

我需要用户单击“信任对 VBA 项目对象模型的访问”,以便我正在构建的应用程序可以帮助他们将代码导入到 VBE。

我可以显示一个消息框或提供文档,告诉他们如何更改设置(并警告他们这样做会产生什么后果)。但该设置仍然隐藏在 Excel UI 中,点击 5 次之后...事实上,即使我也很难记住在哪里可以找到它。

所以我想做的是以编程方式为他们打开该窗口。

我可能可以使用众所周知的变化无常的 SendKeys 方法,但我想知道是否有更好的方法......

(我发现您实际上可以通过宏设置用户对 VBA 项目对象模型的访问权限,方法是使用 VBS 脚本在目标 Office 应用程序未运行时更改键的值根据 this MSDN article 但我更希望用户手动启用此选项或选择不启用)。

编辑:VBA VSTO 解决方案都可以,或者您能想到的任何其他解决方案。

最佳答案

这将弹出对话框。

Application.CommandBars.ExecuteMso("MacroSecurity")

或者,这会做同样的事情:

Application.CommandBars.FindControl(Id:=3627).Execute

用户需要选中该框,即使使用 SendKeys 也无法通过编程方式进行选中。

额外奖励:是否可以更改注册表项?

还有一个注册表项,您可以使用 VBA 更改该注册表项。

enter image description here

我认为您也许可以使用这样的子例程将注册表项设置为“允许访问”。然而,当我对此进行测试时,它确实更改了注册表项值,但它似乎对我访问 VBOM 的能力没有任何影响:

  • 如果我的设置不允许访问,并且我将键值更改为 1,则会收到 1004 错误。
  • 如果我的设置允许访问,并且我将键值更改为 0,则操作 VBOM 的示例代码仍然有效。
  • 如果我以编程方式更改注册表项,它会在重新启动 Excel 应用程序时恢复到之前的状态。

我可能做错了什么,所以我会把它留在这里,以防其他人可以让它工作。我已经使用这种函数为我自己的应用程序设置自定义注册表项,即存储应用程序的当前版本#等,但也许注册表的这一部分只是被锁定,无法以这种方式进行操作。

Const regKey As String = "HKEY_CURRENT_USER\SOFTWARE\MICROSOFT\OFFICE\14.0\Excel\Security\AccessVBOM"
Sub AllowAccessToVBOM()
With CreateObject("WScript.Shell")
'write registry key
.RegWrite regKey, "0", "REG_DWORD"
MsgBox regKey & " : " & .regRead(regKey)
End With


End Sub

关于vba - 以编程方式调出 Excel 的 "Trust Center Settings"对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25234422/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com