Vba Excel加载项-不修改工具栏

Vba Excel加载项-不修改工具栏,vba,excel,excel-addins,Vba,Excel,Excel Addins,我正在寻找向用户部署Excel宏的最佳方法。我的目标是通过添加到加载项工具栏,使最终用户能够非常轻松地安装和推广使用。我知道有很多关于这个主题的帮助文章,但是找不到任何关于这个问题的内容。如果这是个棘手的问题,你能帮我一下吗。有关我的问题的复制步骤,请参见下文 我在excel宏文件的“此工作表”上添加了以下代码作为工作表事件 我将主代码添加到它引用的模块中 我将其保存为加载项漫游文件夹中的.XLAM 我在EXCEL 2013中将其作为加载项启用 安装后,它会将按钮添加到外接程序选项卡 它一直工作

我正在寻找向用户部署Excel宏的最佳方法。我的目标是通过添加到加载项工具栏,使最终用户能够非常轻松地安装和推广使用。我知道有很多关于这个主题的帮助文章,但是找不到任何关于这个问题的内容。如果这是个棘手的问题,你能帮我一下吗。有关我的问题的复制步骤,请参见下文

  • 我在excel宏文件的“此工作表”上添加了以下代码作为工作表事件
  • 我将主代码添加到它引用的模块中
  • 我将其保存为加载项漫游文件夹中的.XLAM
  • 我在EXCEL 2013中将其作为加载项启用
  • 安装后,它会将按钮添加到外接程序选项卡
  • 它一直工作到我关闭Excel,在这种情况下按钮消失
  • 它仍在活动加载项下,但不在工具栏上
  • 守则:

    Option Explicit
    
    Dim cControl As CommandBarButton
    
    Private 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 = "Convert Survey Reporter Tables"
            .Style = msoButtonCaption
            .OnAction = "CMB_General_Table_Formatting"
            '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("Convert Survey Reporter Tables").Delete
      On Error GoTo 0
    
    End Sub
    

    如果您想要使用VBA构建接口的替代方法,我以前已经使用一些功能区XML部署了Excel加载项(XLAM文件)。这允许对生成的接口进行非常细粒度的控制,并且不需要您在VBA中构建接口。对于大多数应用程序,我发现在VBA之外构建功能区组件,然后在VBA中连接回调要容易得多

    对于最终用户,我认为这种方法还提供了外观更好的外接程序,因为生成的界面有自己的功能区选项卡(或者您可以添加到任何现有的功能区选项卡),而不是位于外接程序功能区选项卡中


    如果您希望采用这种方法,我强烈建议使用来构建接口并设置回调。我用它构建了一个外接程序,它有50多个可由按钮和其他功能区表单控件访问的功能。我一开始就很轻松。

    删除错误恢复时的
    下一步
    “以防万一”您可能忽略了一个可能给您提供线索的错误。FreeMan我删除了代码,但在尝试重新安装时没有收到错误。同样的问题仍然存在如果我想在每次打开ExceL时都打开工作簿打开事件,是否需要添加工作簿打开事件?抱歉,这是我对工具栏和加载项知识的限制。我相信会有其他人来帮忙。谢谢弗里曼。有人能帮忙吗?