2012-07-27 164 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

祝你好运!