2012-07-27 165 views
2

我正在使用Microsoft Excel 2010 for Windows。在Excel中自動添加加載項的單個菜單項

我已經開發了一個加載項addin.xlam,它包含一個子mainaddin.xlam位於正確的位置,因此可以通過菜單Developer -> Add-Ins進行查看和選擇。當我打開一個正常的工作簿test.xlsm,然後按Alt + F11,我可以看到addin.xlam的代碼被加載。

我的目標是將一個菜單項添加到Excel的菜單欄中,以允許用戶啓動的main。按照此link,我在addin.xlam代碼如下:

Option Explicit 
Dim cControl As CommandBarButtonPrivate 
Sub Workbook_AddinInstall() 
    On Error Resume Next 'Just in case 

    'Delete any existing menu item that may have been left. 
    Application.CommandBars("Worksheet Menu Bar").Controls("Super Code").Delete 

    'Add the new menu item and Set a CommandBarButton Variable to it 
    Set cControl = Application.CommandBars("Worksheet Menu Bar").Controls.Add 

    'Work with the Variable 
    With cControl 
     .Caption = "Super Code" 
     .Style = msoButtonCaption 
     .OnAction = "main" 'Macro stored in a Standard Module 
    End With 
    On Error GoTo 0 
End Sub 

Private Sub Workbook_AddinUninstall() 
    On Error Resume Next 'In case it has already gone. 
    Application.CommandBars("Worksheet Menu Bar").Controls("Super Code").Delete 
    On Error GoTo 0 
End Sub 

此代碼以及放置在addin.xlamThisWorkbook,它也是test.xlsm可見。 但我在菜單欄中看不到任何更改。

有誰知道會發生什麼?

回答

4

AddinInstall和AddinUninstall事件只有在使用Excel Addin Manager「安裝」或「卸載」插件時纔會觸發。

恕我直言,這可能會導致問題,所以我總是建議使用Workbook_Open和Workbook_BeforeClose事件。

+0

同意。我也使用這種方法。 – 2012-07-27 12:26:44

0

查爾斯是對的​​,您需要用Workbook_Open()替代Workbook_AddinInstall(),並用Workbook_BeforeClose()替換Workbook_AddinUninstall()

此外,您需要CommandBarButton而不是CommandBarButtonPrivate

祝你好運!