自定义选项卡按钮不会连接到宏

Custom Tab Button Won't Connect to Macro

我正尝试按照 here 的指示为 运行 宏创建一个自定义选项卡。我已经按照这些步骤操作,但是 运行 当我尝试单击按钮时遇到了麻烦。我收到消息:Cannot run macro 'hello'. The macro may not be available in this workbook or all macros may be disabled. .rels 文件的修改如下:<Relationship Id="metrics" Type="http://schemas.microsoft.com/office/2007/relationships/ui/extensibility" Target="/CustomUI/trial_CustomUI.xml"/> 文件夹和文件名匹配 Target。 XML 文件如下所示:

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
    <ribbon> 
        <tabs> 
            <tab id="CustomTab" label="My Tab"> 
                <group id = "hello" label = "Hello">
                    <button id = "hi" label =  "Hello" imageMso = "ShapeSmileyFace" size = "large" onAction = "hello"/>
                </group>
            </tab> 
        </tabs> 
    </ribbon> 
</customUI> 

功能区宏如下所示:

Option Explicit

Public MyRibbon As IRibbonUI

Public Sub ControlRibbon(Ribbon As IRibbonUI)
    Set MyRibbon = Ribbon
End Sub

宏看起来像:

Option Explicit

Public Sub Hello(control As IRibbonControl)
    MsgBox "Hello"
End Sub

我遇到的所有答案都与修改 Trust access to the VBA project object model 有关。任何帮助将不胜感激。

编辑:@Peyter 的回答有助于我得出答案。但是,我确实需要进行一些小的语法更改才能使其正常工作:

  1. 而不是 Macro() VBA 默认为 Macro
  2. 我用的是 OnAction="Workbookname.xlsm!Control_Macroname.Control_Macroname"
  3. 而不是 OnAction="Workbookname.xlsm!Control_Macroname"

通过这些修改,我能够使功能区上的按钮正常工作。

是的,这是一个艰难的过程,你快到了。

这是您需要对 3 个部分执行的操作

假设您的 wb 被命名为:workbookname.xlsm

第 1 部分示例 wb xml 参考控制宏(函数)名称:

OnAction="Workbookname.xlsm!Control_Macroname"

第 2 部分功能区控制宏(函数):

Sub Control_Macroname(control as IRibbonControl)
   Call Macro()
End Sub

实际的第 3 部分宏 运行:

Sub Macro()
   'do stuff
End Sub