VBA从功能区运行加载项

时间:2014-07-29 13:34:35

标签: vba excel-vba excel-addins excel

我编写了一个excel加载项,并且有一个带有两个按钮的用户窗体:确定和取消。在“Ok”上,我的宏被调用并将运行。取消时,它将关闭用户表单。

我的问题:如何在excel中的加载项工具栏上显示加载项,并且在单击加载项时我的用户窗体是否会自动激活?

谢谢!

2 个答案:

答案 0 :(得分:2)

要使用旧的命令栏代码,它可以像这样简单:

Sub AddButton()
    Dim btn As CommandBarButton
    DeleteButton
    Set btn = Application.CommandBars(1).Controls.Add(Type:=msoControlButton)
    With btn
        .Caption = "some text"
        .OnAction = "'" & ThisWorkbook.Name & "'!macro_name"
        .Style = msoButtonCaption
        .Tag = "MyTag"
    End With
End Sub
Sub DeleteButton()
    Dim ctl As CommandBarControl
    For Each ctl In Application.CommandBars(1).Controls
        If ctl.Tag = "MyTag" Then ctl.Delete
    Next ctl

End Sub

从Workbook_Open事件中调用AddButton,并确保在Workbook_BeforeClose中清理。 ;)因此,在加载项的ThisWorkbook模块中:

Private Sub Workbook_Open()
AddButton
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
DeleteButton
End Sub

答案 1 :(得分:0)

几天前我刚刚发现了如何做到这一点!

  1. Download the openxml editor
  2. 从编辑器中,使用要转换为addin的宏打开文件 3插入自定义UI部件,选择Excel 2007选项。
  3. 单击类型并编写此代码:

    http://schemas.microsoft.com/office/2006/01/customui'>       

  4. 使用imageMso,您可以选择按钮的图像。 You can see all the images available

    1. 单击“验证”,然后单击“生成回调”。复制回调代码。它看起来像

      ' Button1 onAction的回调 Sub callMyMacro(控制为IRibbonControl) End Sub

    2. 将版本保存在UI编辑器中并关闭。

    3. 现在用宏打开文件,插入一个新模块并粘贴回调代码。在sub的中间,调用你的宏。

      ' Button1 onAction的回调 Sub callValidation(控制为IRibbonControl)     打电话给myMacro End Sub

    4. 到目前为止,您应该可以在插件标签中看到您的宏。将文件另存为AddIn,然后您就绪了。