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

Bob*_*S.P 4 excel vba add-in ribbon

我用VBA编写了一个简单的excel加载项,它包含一个表单和相关代码.将其保存为加载项然后在Excel中安装后,没有任何反应!

我需要在丝带中放一个按钮来触发我的插件,就像"解算器"一样.我真的需要它,请告诉我如何.

我真的很感激任何建议.

Ror*_*ory 14

试试这个,需要在模块或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
Run Code Online (Sandbox Code Playgroud)

确保在关闭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
Run Code Online (Sandbox Code Playgroud)

您创建的要从按钮运行的子组件.

Public Sub MainSub
MsgBox("Hello")
End Sub
Run Code Online (Sandbox Code Playgroud)

您还可以在"加载项"功能区中添加一个列表框以保存多个按钮.首先在类型:= msoControlPopup中创建一个MenuItem,然后在上面的弹出添加按钮中创建.

除了这个VBA代码之外,您还可以更轻松地转到文件 - >选项 - >自定义功能区,并添加一个包含新组的新选项卡,并为该组分配宏.但这只适合你,上面的代码将允许任何人安装插件并在打开时自动按钮.

希望这能回答你的问题.