自定义选项卡按钮不会连接到宏
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 的回答有助于我得出答案。但是,我确实需要进行一些小的语法更改才能使其正常工作:
- 而不是
Macro()
VBA 默认为 Macro
- 我用的是
OnAction="Workbookname.xlsm!Control_Macroname.Control_Macroname"
而不是 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
我正尝试按照 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 的回答有助于我得出答案。但是,我确实需要进行一些小的语法更改才能使其正常工作:
- 而不是
Macro()
VBA 默认为Macro
- 我用的是
OnAction="Workbookname.xlsm!Control_Macroname.Control_Macroname"
而不是
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