首页 > 解决方案 > 如何从 VBA 代码操作 Excel 2010 UI?

问题描述

我有一个基于 Excel 的应用程序 - 用 VBA 编写。我想在运行时为应用程序创建一个自定义 UI。

例如,当用户打开我的 excel 时,应运行 VBA 方法以将新选项卡、组和控件添加到 Excel UI。关闭 Excel 后,应删除该自定义 UI。

excel 文件本身是从 csv 和 txt 文件自动生成的 - 因此我无法在 XLS (zip) 文件中嵌入 CustomUI.xml 文件,因为 StackOverflow 帖子建议很少。

我遇到了可以在运行时操作功能区的 VBA 代码....用 VBA 编写 Excel 插件,然后放置一个触发它的按钮

并尝试以下方法在Add-Ins选项卡下创建我的自定义 UI

Sub CreateMyMenu()
    Dim myCB As CommandBar
    Dim myCBtn1 As CommandBarButton
    Dim myCBtn2 As CommandBarButton
    Dim myCPup1 As CommandBarPopup
    Dim myCPup2 As CommandBarPopup
    Dim myCP1Btn1 As CommandBarButton
    Dim myCP1Btn2 As CommandBarButton

    ' Delete the CommandBar if it exists already
    On Error Resume Next
    Application.CommandBars("MyUI").Delete

    ' Create a new CommandBar
    Set myCB = CommandBars.Add(name:="MyUI", Position:=msoBarFloating)


    ' Add button 1 to this bar
    Set myCBtn1 = myCB.Controls.Add(Type:=msoControlButton)
    With myCBtn1
     .Caption = "My Tool"
     .Style = msoButtonCaption   '<- force caption text to show on your button
    End With

    ' Show the command bar
    myCB.Visible = True
End Sub

当我运行这个子时,用户界面是这样创建的......

在此处输入图像描述

有没有办法:

  1. 控制“自定义工具栏”以外的组名?
  2. 控制 UI 位置(不是在加载项选项卡下,而是在新创建的选项卡上)?
  3. 如何删除“菜单命令”组和按钮?(我是不是以某种方式做到了?)

标签: excelvbauser-interfaceribbon

解决方案


推荐阅读