在Excel中自动添加一个加载项的单个菜单项

我正在使用Microsoft Excel 2010 for Windows。

我已经开发了一个插件addin.xlam ,其中包含一个子mainaddin.xlam是在正确的位置,以便通过菜单Developer -> Add-Ins可见和可选。 当我打开一个正常的工作簿test.xlsm ,然后按Alt + F11 ,我可以看到addin.xlam的代码被加载。

我的目标是添加一个菜单项到Excel的菜单栏,允许用户启动add-in.xlam 。 通过下面这个链接 ,我在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.xlam ThisWorkbook中,它也在addin.xlam可见。 但是在菜单栏中我看不到任何改变。

有谁知道发生了什么?

AddinInstall和AddinUninstall事件只有在使用Excel Addin Manager“安装”或“卸载”插件时才会触发。

恕我直言,这可能会导致问题,所以我总是build议使用Workbook_Open和Workbook_BeforeClose事件。

Charles是正确的,您需要将Workbook_AddinInstall()replace为Workbook_Open() ,并将Workbook_AddinUninstall()replace为Workbook_BeforeClose()

此外,您需要CommandBarButton而不是CommandBarButtonPrivate

祝你好运!