代码之家  ›  专栏  ›  技术社区  ›  Jon Rose

“运行时错误“1004”无法编辑隐藏工作簿上的宏。在功能区XML中使用“onLoad”时,请使用“Unhide”命令“取消隐藏工作簿”

  •  2
  • Jon Rose  · 技术社区  · 7 年前

    我感觉我使用的“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实例打开时),会出现以下错误:

    运行时错误“1004”:无法编辑隐藏工作簿上的宏。 使用Unhide命令取消隐藏工作簿。

    然后,我必须在错误上选择两次“结束”按钮,因为它会弹出两次。

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

    1 回复  |  直到 6 年前
        1
  •  0
  •   Jon Rose    7 年前

    经过进一步的研究,我发现一秒钟的简单延时就可以实现这一点。这并不完全是我想要的,但它很有效,所以我决定回答我自己的问题。

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