Excel 2013 ribbonx xml:CustomUI工作正常,但生成的按钮拒绝运行我的宏

时间:2014-03-01 16:53:56

标签: xml excel-vba ribbonx vba excel

使用customUI工具将选项卡添加到Excel 2013 xlsm工作簿。我正在运行Windows 7. CustomUI为我提供了绿灯(“自定义UI XML格式正确!”),并生成回调代码。打开工作簿时,会出现新选项卡,新组和新按钮。我将回调代码添加到VBA中的module1。但是当我点击新按钮时,我收到了消息

“无法运行宏'AddNodeNew'。此工作簿中可能无法使用该宏,或者可能禁用所有宏。”

嗯,宏AddNodeNew可用,并且宏未被禁用。那么发生了什么? 注意:xlsm工作簿已经包含许多其他宏(没有名为AddNodeNew)。

我想在这里包含代码,但是你的系统不会让我 - 一直告诉我我没有正确地将其格式化为代码。但我DID通过它要求的4个空格缩进,但仍然没有骰子。关于这个主题的帮助是不充分的。

1 个答案:

答案 0 :(得分:-1)

显然,RibbonX自定义UI元素可以调用VBA项目的ThisWorkbook部分中存储的宏,但是我还没有弄清楚如何从模块中调用宏,然后我才知道我根本不想这样做,因为当模块被重命名时,我需要在自定义界面中调整引用。

因此,您可以做的是在ThisWorkbook中创建一个调用方,然后将调用该函数。我的解决方案是将被调用的函数名称放入xml元素id属性中,然后在ThisWorkbook中拥有一个Caller函数,所有自定义控件都将调用该函数。调用时,调用方将读取控件ID属性,并使用该名称调用另一个函数,而不管其物理位置如何。

Public Sub Caller(ctrl As IRibbonControl)
    Dim sFunction As String: sFunction = ctrl.ID
    Application.Run sFunction
End Sub