在Excel中自动添加加载项的单个菜单项
问题描述:
我正在使用Microsoft Excel 2010 for Windows。在Excel中自动添加加载项的单个菜单项
我已经开发了一个加载项addin.xlam
,它包含一个子main
。 addin.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.xlam
ThisWorkbook
,它也是test.xlsm
可见。 但我在菜单栏中看不到任何更改。
有谁知道会发生什么?
答
AddinInstall和AddinUninstall事件只有在使用Excel Addin Manager“安装”或“卸载”插件时才会触发。
恕我直言,这可能会导致问题,所以我总是建议使用Workbook_Open和Workbook_BeforeClose事件。
答
查尔斯是对的,您需要用Workbook_Open()
替代Workbook_AddinInstall()
,并用Workbook_BeforeClose()
替换Workbook_AddinUninstall()
。
此外,您需要CommandBarButton
而不是CommandBarButtonPrivate
。
祝你好运!
同意。我也使用这种方法。 – 2012-07-27 12:26:44