如何以编程方式将工具栏(带有按钮)添加到 Excel(2002 或更高版本)?
单击按钮时,我想要一个处理程序来创建我的 COM 对象并在其上调用方法?
这是应该在 Excel 2007 之前的版本上工作的基础,但不包括Excel 2007,它具有完全不同的界面。
这在您的 ThisWorkbook 模块中:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
DeleteCommandBar
End Sub
Private Sub Workbook_Open()
ShowToolbar
End Sub
这可以放在同一个模块中,也可以放在一个单独的模块中,你可以选择,尽管我更喜欢将它放在它自己的模块中,这样它可以更明显。你不应该需要 OnClick,当你创建按钮时,按钮会被告知要调用什么例程。
Private Const TOOLBARNAME = "MyFunkyNewToolbar"
Public Sub ShowToolbar()
' Assumes toolbar not already loaded '
Application.CommandBars.Add TOOLBARNAME
AddButton "Button caption", "This is a tooltip", 526, "NameOfASubInYourVBACode"
' call AddButton more times for more buttons '
With Application.CommandBars(TOOLBARNAME)
.Visible = True
.Position = msoBarTop
End With
End Sub
Private Sub AddButton(caption As String, tooltip As String, faceId as Long, methodName As String)
Dim Btn As CommandBarButton
Set Btn = Application.CommandBars(TOOLBARNAME).Controls.Add
With Btn
.Style = msoButtonIcon
.FaceId = faceId ' choose from a world of possible images in Excel: see http://www.ozgrid.com/forum/showthread.php?t=39992 '
.OnAction = methodName
.TooltipText = tooltip
End With
End Sub
Public Sub DeleteCommandBar()
Application.CommandBars(TOOLBARNAME).Delete
End Sub
您可以编写一个 Excel 插件,使用您的按钮和 COM 调用代码创建一个工具栏,然后将您创建的 .xla 文件放到用户的XLStart 文件夹中。