Это основа для того, что должно работать на версиях до , но не включает 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