无法使Excel自定义function区callback工作

我试图创build一个button,我想要显示在我的自定义选项卡上,指示用户是否具有最新版本的Excel加载项。 我打算检查他们是否有最新版本,只要用户打开一个Excel实例,将最初Last Modifiedxlam文件写入文件。 然后,在Workbook_Open事件中,我将启动一个OnTime操作,以便将文件中写入的date和时间与公共文件的Last Modified每15分钟)进行比较。 这是为了防止用户在部署更新时打开任何Excel实例,因为他们必须closures所有实例,然后重新打开Excel以获得最新版本。

无论如何,有了这样的背景,我遇到了状态button的callback问题。 我的想法是让button显示一个绿色的检查,并且在最初打开excel时有一个最新的标签,因为在这种情况下,Excel将具有当前版本,而不是保存在临时文件中的caching版本。 然后,如果当updateCheck子触发它发现更新的版本可用我想要更改button图像感叹号和标签更新

问题是,似乎每当我尝试通过使用自定义用户界面编辑器的button元素(除默认的onAction )上的任何callbackfunction区不再显示在Excel中。 如果我没有任何callback的button,只有在function区本身的onLoadcallback,那么function区显示正常打开Excel和onLoad事件触发(用MsgBoxtesting)。 以下是我的XML和VBA代码

在Module1中:

 Public myRibbonUI As IRibbonUI 'Callback for customUI.onLoad Sub RibbonLoaded(ribbon As IRibbonUI) Set myRibbonUI = ribbon MsgBox ("Ribbon Loaded") End Sub 'Callback for customButton getImage Sub GetButtonImage(control As IRibbonControl, ByRef returnedVal) MsgBox (returnedVal) End Sub 'Callback for customButton getLabel Sub GetButtonLabel(control As IRibbonControl, ByRef returnedVal) MsgBox (returnedVal) End Sub 'Callback for customButton onAction Sub ButtonClick(control As IRibbonControl) 'Invalidates the cache of a single control MsgBox ("Fire!") myRibbonUI.InvalidateControl ("customButton") End Sub 

XML代码:

 <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="RibbonLoaded"> <ribbon startFromScratch="false"> <tabs> <tab id="customTab" label="Custom Tab"> <group id="customGroup" label="Custom Group"> <button id="customButton" label="Custom Button" imageMso="HappyFace" size="large" onAction="ButtonClick" getImage="GetButtonImage" getLabel="GetButtonLabel"/> </group> </tab> </tabs> </ribbon> </customUI> 

有了上面的代码,我只是想看看是否可以得到callback工作(我不能)。

最后,问题是:我做错了什么? 为了确保在xlam文件中使用它不仅仅是一个问题,我试着用一个xlsm文件做,而且我仍然得到相同的结果。

后续问题:如何将图像更改为其他imageMso ? 我已经看到人们使用图像更改自定义图像,但我也使用图像更改为另一个imageMso还是我使用imageMso代替callback过程中的图像?

在同一个XMLbutton节点中,不能同时拥有labelgetLabel ,或者imagegetImage 。 当您检查代码时,自定义用户界面编辑器没有标记这个吗?