"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
我感觉 "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