2016-10-22 180 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