excel - 用VBA编写Excel Addin,然后放置一个触发它的按钮

标签 excel vba add-in ribbon

我用VBA编写了一个简单的Excel插件,它包含一个表单和相关代码。将其保存为加载项然后将其安装到 Excel 中后,什么也没有发生!

我需要在功能区中的某个位置放置一个按钮来触发我的加载项,就像“求解器”一样。 我真的需要它,请告诉我如何。

我非常感谢任何建议。

最佳答案

试试这个,需要添加到您的外接程序中,无论是在模块中还是在 ThisWorkbook 中。

Private Const Button as String = "SomeName"

Sub Auto_Open   'Or Private Sub Workboo_Open() in ThisWorkbook
Dim CmdBar as CommandBar
Dim CmdBarMenu as CommandBarControl
Dim CmdBarMenuItem as CommandBarControl

Set CmdBar = Application.CommandBars("Worksheet Menu Bar")
Set CmdBarMenu = CmdBar.Controls("Tools")   ' Index 6

On Error Resume Next
   Application.DisplayAlerts = False
   CmdBarMenu.Controls(Button).Delete 'Just in case a button with same name already exists
   Application.DisplayAlerts = True
On Error GoTo 0

Set CmdBarMenuItem = CmdBarMenu.Controls.Add(Type:=msoControlButton)
With CmdBarMenuItem
     .Caption = Button
     .OnAction = "MainSub"    'Name of the sub it will call when button is pushed
End With

End Sub

请确保删除关闭 Excel 时的按钮,否则每次打开插件时都会添加一个额外的按钮。

Sub Auto_Close 'Or Private Sub Workbook_BeforeClose(Cancel As Boolean) in ThisWorkbook
Dim CmdBar as CommandBar
Dim CmdBarMenu as CommandBarControl

Set CmdBar = Application.CommandBars("Worksheet Menu Bar")
Set CmdBarMenu = CmdBar.Controls("Tools")   ' Index 6

On Error Resume Next
   Application.DisplayAlerts = False
   CmdBarMenu.Controls(Button).Delete
   Application.DisplayAlerts = True
On Error GoTo 0

End Sub

您创建的子程序,您希望从按钮运行。

Public Sub MainSub
MsgBox("Hello")
End Sub

您还可以在加载项功能区中添加一个列表框来容纳多个按钮。首先创建一个 MenuItem 作为 type:=msoControlPopup 然后在弹出窗口中添加按钮如上。

除了此 VBA 代码之外,您还可以更轻松地转到"file"->“选项”->“自定义功能区”,添加带有新组的新选项卡,然后为该组分配一个宏。但这只对你有用,上面的代码将允许任何人安装插件并在打开时自动打开一个按钮。

希望这能回答您的问题。

关于excel - 用VBA编写Excel Addin,然后放置一个触发它的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10992205/

相关文章:

c# - 嵌入式 Outlook View 控件

excel - 输入数据后如何卡住 =today() 函数

c# - asp.net 中的 Excel 下载库?

c# - 如何让 C# 连接到 excel API

vba - 如何更改命名范围的 RefersTo?

vba - 签名未出现在 Excel 自动电子邮件中

c# - Excel 加载项 (C#) - 如何处理用户设置?

vba - 操作 11 列的列表框

vba - VBA IDE 中长字符串的格式

visual-studio - Visual Studio 插件 - 将文件添加到项目