2

我正在使用适用于 Windows 的 Microsoft Excel 2010。

我已经开发了一个 add-in addin.xlam,其中包含一个 sub mainaddin.xlam位于正确的位置,因此可以通过菜单看到和选择Developer -> Add-Ins。当我打开一个普通的工作簿test.xlsm,然后按Alt + F11,我可以看到代码addin.xlam已加载。

我的目标是在 Excel 的菜单栏中添加一个菜单项,以允许用户启动main. 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

这段代码很好地放置在ThisWorkbookaddin.xlam,在 中也可见test.xlsm但我在菜单栏中看不到任何变化。

有谁知道会发生什么?

4

2 回答 2

4

AddinInstall 和 AddinUninstall 事件仅在使用 Excel 插件管理器“安装”或“卸载”插件时触发。

恕我直言,这可能会导致问题,因此我始终建议使用 Workbook_Open 和 Workbook_BeforeClose 事件。

于 2012-07-27T10:06:37.410 回答
0

查尔斯是对的​​,您需要替换Workbook_AddinInstall()Workbook_Open(),并替换Workbook_AddinUninstall()Workbook_BeforeClose()

此外,您CommandBarButton不需要CommandBarButtonPrivate.

祝你好运!

于 2014-03-23T10:37:57.303 回答