我正在使用Microsoft Excel 2010 for Windows。
我已经开发了一个加载项addin.xlam
,其中包含一个子main
。 addin.xlam
位于正确的位置,以便通过菜单Developer -> Add-Ins
显示和选择。当我打开普通工作簿test.xlsm
并按Alt + F11
时,我可以看到addin.xlam
的代码已加载。
我的目标是在Excel的菜单栏中添加一个菜单项,以允许用户启动main
add-in.xlam
。按照此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
此代码位于ThisWorkbook
的{{1}},addin.xlam
中也可见。 但我看不到菜单栏中的任何变化。
有谁知道会发生什么?
答案 0 :(得分:4)
只有在使用Excel Addin Manager“安装”或“卸载”插件时才会触发AddinInstall和AddinUninstall事件。
恕我直言,这可能会导致问题,所以我总是建议使用Workbook_Open和Workbook_BeforeClose事件。
答案 1 :(得分:0)
Charles是对的,您需要将Workbook_AddinInstall()
替换为Workbook_Open()
,并将Workbook_AddinUninstall()
替换为Workbook_BeforeClose()
。
此外,您需要CommandBarButton
而不是CommandBarButtonPrivate
。