You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于快速访问工具栏(QAT)的宏与技术问题咨询

快速访问工具栏(QAT)自定义宏及常见问题解决方案

嘿,这里整理了你需要的QAT编辑宏,还有你问到的几个问题的实用解决方案,都是Office自定义场景里常用的方法:


用于编辑QAT的VBA宏示例

这个宏可以帮你快速在QAT上添加自定义按钮,还能直接设置图标、提示文本等属性:

Sub CustomizeQAT()
    Dim cmdBar As CommandBar
    Dim cmdBtn As CommandBarButton
    
    ' 获取快速访问工具栏的命令栏对象
    Set cmdBar = Application.CommandBars("Quick Access Toolbar")
    
    ' 可选:清除现有自定义按钮,按需启用
    ' cmdBar.Reset
    
    ' 添加自定义宏按钮到QAT
    Set cmdBtn = cmdBar.Controls.Add(Type:=msoControlButton, Temporary:=True)
    With cmdBtn
        .Caption = "我的自定义工具"
        .OnAction = "MyCustomMacro" ' 替换为你的宏名称
        .Style = msoButtonIconAndCaption
        .FaceId = 123 ' 用内置图标ID,可替换为自定义图标
        .TooltipText = "点击运行我的专属宏工具" ' 直接设置提示文本
    End With
    
    MsgBox "QAT自定义完成!", vbInformation
End Sub

' 配套测试宏
Sub MyCustomMacro()
    MsgBox "自定义宏运行成功!"
End Sub

如何给按钮添加自定义提示文本(Tooltip)?

分两种场景处理:

  1. 用VBA创建按钮:直接在按钮对象里设置 .TooltipText 属性就行,就像上面宏里写的那样,一行代码搞定。
  2. 手动添加/内置按钮:如果是手动加的按钮,或者要改内置按钮的Tooltip,推荐用Office的自定义UI文件(比如Excel的.xlsm里的customUI.xml),示例代码如下:
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
    <ribbon>
        <qat>
            <button id="MyCustomBtn" label="我的按钮" screentip="快速启动工具" supertip="点击执行XX操作,提升工作效率" onAction="MyCustomMacro"/>
        </qat>
    </ribbon>
</customUI>

其中screentip是鼠标悬停时的短提示,supertip是展开的详细说明。


如何给任意按钮添加Tooltip?

对于QAT上的内置按钮(比如保存、撤销),手动方式没法直接改,但用VBA或自定义UI就能实现:

  • VBA遍历修改:
Sub ChangeBuiltInBtnTooltip()
    Dim cmdBar As CommandBar
    Dim cmdBtn As CommandBarButton
    
    Set cmdBar = Application.CommandBars("Quick Access Toolbar")
    
    ' 遍历QAT按钮,找到目标按钮
    For Each cmdBtn In cmdBar.Controls
        If cmdBtn.Caption = "保存" Then ' 根据按钮标题判断
            cmdBtn.TooltipText = "一键保存当前文档所有更改"
            Exit For
        End If
    Next cmdBtn
End Sub
  • 自定义UI方式:通过idMso引用内置按钮,直接设置提示文本:
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
    <ribbon>
        <qat>
            <button idMso="FileSave" screentip="快速保存" supertip="点击保存当前工作簿的所有修改"/>
        </qat>
    </ribbon>
</customUI>

如何更改“White Arrow”按钮的图标?

分内置按钮和自定义按钮两种情况:

  1. 自定义按钮:用VBA直接设置图标,支持内置图标或自定义图片:
' 方法1:用内置图标FaceId(可查Office图标库获取对应ID)
cmdBtn.FaceId = 45

' 方法2:加载本地自定义图片
Dim img As StdPicture
Set img = LoadPicture("C:\Icons\custom_arrow.png") ' 推荐16x16/32x32像素
cmdBtn.Picture = img
cmdBtn.Mask = img ' 设置遮罩让图标显示更清晰
  1. 内置“White Arrow”按钮:用自定义UI重新定义图标,还能把图标嵌入到文档里(避免依赖本地路径):
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
    <ribbon>
        <qat>
            <button idMso="WhiteArrow" image="CustomArrow" screentip="自定义箭头"/>
        </qat>
        <resources>
            <bt:images xmlns:bt="http://schemas.microsoft.com/office/2006/11/commands">
                <bt:image id="CustomArrow" src="customUI/images/arrow_custom.png"/>
            </bt:images>
        </resources>
    </ribbon>
</customUI>

如何插入自定义图标?

有三种常用方法:

  • VBA加载本地图片:就像上面改图标时的代码,用LoadPicture加载本地PNG/ICO文件,赋值给按钮的.Picture属性。
  • 自定义UI嵌入图标:把图标放到Office文件的customUI/images文件夹里(可以用压缩软件打开.xlsm/.docx等文件操作),然后在customUI.xml里引用,这样图标会和文档一起保存,不会丢失。
  • 手动操作:右键QAT→「自定义快速访问工具栏」→选中目标按钮→点击「更改按钮图标」→选择「浏览」导入本地图片(部分Office版本支持)。

是否可以添加更多子菜单,例如Submenus_1到Submenus_5?

完全可以!不管用VBA还是自定义UI,都能创建多级子菜单:

VBA实现示例

Sub AddQATSubmenus()
    Dim cmdBar As CommandBar
    Dim mainMenu As CommandBarPopup
    Dim subMenu As CommandBarPopup
    Dim cmdBtn As CommandBarButton
    
    Set cmdBar = Application.CommandBars("Quick Access Toolbar")
    
    ' 创建主菜单
    Set mainMenu = cmdBar.Controls.Add(Type:=msoControlPopup, Temporary:=True)
    mainMenu.Caption = "我的功能菜单"
    mainMenu.TooltipText = "展开查看所有子功能"
    
    ' 循环添加Submenus_1到Submenus_5
    For i = 1 To 5
        Set subMenu = mainMenu.Controls.Add(Type:=msoControlPopup)
        subMenu.Caption = "Submenus_" & i
        
        ' 在每个子菜单里添加示例按钮
        Set cmdBtn = subMenu.Controls.Add(Type:=msoControlButton)
        cmdBtn.Caption = "功能" & i
        cmdBtn.OnAction = "SubmenuFunc" & i
        cmdBtn.TooltipText = "运行Submenus_" & i的功能
    Next i
    
    MsgBox "QAT子菜单添加完成!", vbInformation
End Sub

' 示例子菜单功能宏
Sub SubmenuFunc1()
    MsgBox "Submenus_1的功能运行成功!"
End Sub
' 可复制SubmenuFunc1,修改数字得到SubmenuFunc2到SubmenuFunc5

自定义UI实现示例

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
    <ribbon>
        <qat>
            <popup id="MainMenu" label="我的功能菜单" screentip="我的功能菜单">
                <popup id="Submenu1" label="Submenus_1">
                    <button id="Sub1Func" label="功能1" onAction="SubmenuFunc1"/>
                </popup>
                <popup id="Submenu2" label="Submenus_2"/>
                <popup id="Submenu3" label="Submenus_3"/>
                <popup id="Submenu4" label="Submenus_4"/>
                <popup id="Submenu5" label="Submenus_5"/>
            </popup>
        </qat>
    </ribbon>
</customUI>

每个子菜单里还可以继续添加按钮或更深层级的子菜单,完全满足你的需求。

内容的提问来源于stack exchange,提问作者rediffusion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:39:43