3

如何以编程方式将工具栏(带有按钮)添加到 Excel(2002 或更高版本)?

单击按钮时,我想要一个处理程序来创建我的 COM 对象并在其上调用方法?

4

2 回答 2

7

这是应该在 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
于 2009-02-27T13:02:28.137 回答
2

您可以编写一个 Excel 插件,使用您的按钮和 COM 调用代码创建一个工具栏,然后将您创建的 .xla 文件放到用户的XLStart 文件夹中。

于 2009-02-27T02:38:46.000 回答