2016-10-22 89 views
0

我正尝试创建一个按钮,以显示在我的自定义选项卡上,该按钮指示用户是否具有最新版本的Excel加载项工作中。我计划在用户打开一个Excel实例时,通过将xlam文件的原始Last Modified写入文件来检查它们是否具有最新版本。然后在Workbook_Open事件中,我将启动一个OnTime操作,将文件中写入的日期&与每15分钟公开文件的Last Modified的日期进行比较。这是为了防止用户在部署更新时打开任何Excel实例,因为他们必须关闭所有实例,然后重新打开Excel才能获得最新版本。无法使Excel自定义功能区回调正常工作

无论如何,有了这种背景,我遇到了状态按钮的回调问题。我的想法是让按钮显示一个绿色的支票,并在最初打开excel时标签为最新的,因为在这种情况下,Excel将具有当前版本,而不是保存在临时文件中的缓存版本。然后,如果updateCheck子启动时发现有更新的版本可用,我想将按钮图像更改为感叹号并将标签更改为立即更新

问题是,似乎每当我试图通过使用自定义用户界面编辑器将按钮元素(除默认onAction以外)上的任何回调函数功能区不再显示在Excel中。如果我没有对按钮进行任何回调,并且色带本身只有onLoad回调,则打开Excel和onLoad事件触发(用MsgBox测试)时,色带显示正常。下面是我的XML和VBA代码

在模块1:

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> 

与上面的代码,我只是简单地想看看我是否能获得工作的回调(我不能)。

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

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

回答

1

在同一个XML按钮节点中,不能同时使用labelgetLabelimagegetImage。当您检查代码时,自定义用户界面编辑器没有标记这个吗?

+0

我实际上直到昨天才知道有一个验证功能* headdesk *。另外,这是我第一次使用回调工作。谢谢,在删除'label'和'image'标签后,它工作正常! – CaffeinatedCoder