"Run-time error '1004' Cannot edit a macro on a hidden workbook. Unhide the workbook using the Unhide command" 在功能区中使用 "onLoad" 时 XML

"Run-time error '1004' Cannot edit a macro on a hidden workbook. Unhide the workbook using the Unhide command" When using "onLoad" in Ribbon XML

我感觉 "onLoad" 回调使用不当。本质上,我想做的是 运行 在我的自定义功能区加载后立即 VBA 中的一些代码(位于我创建的加载项上)。

这是XML代码:

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="spRibbon_onLoad">

这里是VBA代码:

这是一个全局声明:

Dim grxIRibbonUI

这是我正在尝试的代码 运行:

Sub spRibbon_onLoad(ribbon As IRibbonUI)
    Set grxIRibbonUI = ribbon
    Call spCode 'this is the code I'm attempting to run
End Sub

问题是,如果我尝试打开现有的工作簿(当 excel 的其他实例未打开时),我会收到以下错误:

Run-time error '1004': Cannot edit a macro on a hidden workbook. Unhide the workbook using the Unhide command.

然后我必须 select "End" 按钮两次出现错误,因为它会弹出两次。

我想我能理解为什么会抛出该错误,我的自定义加载项尚未加载自定义功能区,但由于主功能区已加载,它正在尝试 运行 一个它不能的宏看。但是,如果我已经打开了一个工作簿并且我的自定义功能区已经可见,它就不会 运行 代码。如有任何建议,我们将不胜感激。

经过更多研究后,我发现只需延迟一秒即可完成此操作。这不是我一直在寻找的东西,但它确实有效,所以我决定回答我自己的问题。

Sub spRibbon_onLoad(ribbon As IRibbonUI)
    Application.OnTime Now + TimeValue("00:00:01"), "spCode"
End Sub