给 Word 文档加一个自己的选项卡:Office Custom UI Editor 上手指南
【免费下载链接】office-custom-ui-editorStandalone tool to edit custom UI part of Office open document file format项目地址: https://gitcode.com/gh_mirrors/of/office-custom-ui-editor
Office Custom UI Editor 是一个独立的小工具:直接打开 Word、Excel 或 PPT 文档,编辑藏在文档内部的一段 Custom UI(自定义界面)XML,把新的选项卡、分组和按钮写回文档,保存后重新打开就能看到效果。整个过程不需要编译宏,也不需要部署插件。
打开文档就能改界面:这个工具是干什么的
Office 的开放文件格式(.docx、.xlsx、.pptx)本质上是一个 ZIP 包,里面有一块叫 Custom UI 的部分,用一段 XML 描述用户自定义的功能区界面。这个工具就是针对这一块的专用编辑器:打开文档后把 Custom UI 内容加载到带语法高亮的编辑区,修改后再保存回文档。编辑区旁的 Validate 按钮会按仓库 Schemas 目录附带的 Office 2007/2010 两套 schema 校验 XML,其中 2010 这套一直用到现在的 365 版本;编辑过程支持撤销重做。打开一个没有定制过的文档时编辑区是空的,定制过的会直接显示已有配置。
所以它和"写个 VBA 宏、做成模板让同事安装"是两条不同的路。
定制跟着文档走:它替你省掉的事
界面定制写进文档本身,意味着分享单位就是文档:你把文件发给同事,他打开看到的就是同一套自定义功能区,不需要装任何东西,也不存在"宏被安全设置禁用"的问题。仓库 Samples 目录里放了 5 个现成样例,编辑器的 Samples 菜单可以一键加载——新建选项卡、往 Word 插入页插组、Excel 定制选项卡、Backstage 首屏、改写内置命令,覆盖了最常见的几种形态。改完点一下 Validate,schema 校验不过会直接指出出错的位置,不用等到打开文档才发现按钮没出来。
下面直接从安装走到看到效果。
最短路径:从安装到看到新选项卡
从零到功能区上多出一个选项卡,按下面顺序走一遍就行:
- 获取工具:
git clone https://gitcode.com/gh_mirrors/of/office-custom-ui-editor,或直接使用仓库 publish 目录中编译好的 setup.exe 安装。 - 启动编辑器,文件 → 打开,选择一个已存在的 .docx 文档。
- 在 Samples 菜单里加载 "Custom Tab",编辑区会填入样例配置:
<tab id="customTab" label="Custom Tab"> <group id="customGroup" label="Custom Group"> <button id="customButton" label="Custom Button" imageMso="HappyFace" size="large" onAction="Callback" /> </group> </tab>- 点 Validate 确认无错误,然后文件 → 保存(Ctrl+S)。
- 关闭并重新打开这个 Word 文档,功能区里多出一个 "Custom Tab",里面的大按钮使用 HappyFace 这个内置图标。
imageMso 是 Office 自带图标库中的图标名,size="large" 决定按钮用大号规格。跑通这一步之后,剩下的事就是把样例换成你要的按钮,而配置的词汇量其实不大。
读懂配置:四个高频元素
整个配置的骨架就是"选项卡 → 分组 → 按钮"三层,外加一类对内置命令的改写:
| 元素 | 作用 | 常用属性 |
|---|---|---|
tab | 选项卡 | id、label、insertAfterMso(插在哪个内置选项卡之后) |
group | 选项卡内的分组 | id、label、idMso(直接引用内置分组) |
button | 按钮 | label、imageMso(内置图标名)、size |
command | 改写内置命令的行为 | idMso、onAction、enabled |
自建元素要起唯一的 id,显示文字由 label 决定,图标由 imageMso 指定。图标名可以在 Office Fluent UI 命令标识符列表里查,写错时按钮仍在、只是图标空白,拿 Samples 里现成的名字先试最稳妥。
不新建选项卡,只往现有选项卡里插一组
比新建选项卡更常用的,是在内置选项卡里加一组按钮。仓库里 "Word - Group on Insert Tab" 样例把 "Document ID" 按钮插进内置的插入页,关键有两处:tab 上用 idMso="TabInsert" 指向内置选项卡,group 上用 insertAfterMso 指定跟在哪个内置分组后面。
<tab idMso="TabInsert"> <group id="customGroup" label="Contoso" insertAfterMso="GroupIllustrations"> <button id="customButton" label="Document ID" size="large" imageMso="ListNumVal" onAction="insertDocID" /> </group> </tab>选项卡和分组解决了"界面放哪",同一套 XML 还能管另外两个地方。
右键菜单和 Backstage:同一套 XML 的另外两处
contextMenus 节点让你往内置右键菜单里加按钮:用 contextMenu 元素的 idMso 指定目标菜单(比如文本的右键菜单),内部照旧放 button。Backstage 节点管按 F 打开的开始页,可以在第一列里加自定义任务组——仓库的 "Custom OutSpace" 样例就放了打开、保存、另存为三个任务。这两处的控件写法与功能区一致,还是分组加按钮加图标名,只是 Backstage 多了一层 firstColumn 布局需要理解。右键菜单对位置比较敏感,动手前最好先确认目标菜单的 idMso,改完在文档里实际右键测一遍。
界面放哪都解决了,下一个问题是点下去会发生什么。
按钮真正执行动作的两种方式
"加了按钮"不等于"按钮能用",动作来源只有两条路。第一条是用内置命令:控件上写 idMso,Office 直接执行对应命令的默认行为,比如 idMso="Bold" 就是加粗,全程不写一行代码,这是非程序员最稳的路线。第二条是自定义回调:onAction 指向一个处理者名字,点击时如果文档里有同名的 VBA 宏,就调用那个宏;处理者也可以是 COM 加载项注册的处理器;没有同名处理者时,按钮点了没反应。仓库的 Repurpose 样例还展示了第三条隐藏用法——不改按钮,而是改写内置命令本身:
<commands> <command idMso="Save" onAction="MySave" /> <command idMso="Bold" enabled="false" /> </commands>上面把内置的保存命令劫持到 MySave 回调,相当于把开关的线路改接到了自己的盒子上;下面一行则直接禁用加粗。这类改写一般用于团队强制统一保存流程,个人使用建议少碰。
从一个人到一个小团队:配置怎么分享
既然定制写在文档里,团队做法就是把最终配置固化进一个母版模板,新文档从模板创建后天然带着定制功能区。XML 本身也可以单独管理:把编辑器里的最终内容复制出来存到共享目录或代码库,界面调整只改这一份 XML,不用翻文档。同一份 XML 对 Word、Excel、PPT 是通用的,schema 相同,但内置选项卡和分组的 idMso 名称在各应用间有差异,insertAfterMso 这类定位属性要按目标应用核对——仓库里 Word 和 Excel 的两个样例正好是同一思路在两种应用里的对照。
动手前,先确认这三件事
- 你的 Office 用的是经典功能区:这套 XML 适用于 2007 到 365 的经典界面,2024 版 Word/Excel 的全新界面不支持它。
- 图标名必须真实存在:imageMso 写错时按钮还在、图标空白,先抄 Samples 里验证过的名字。
- 带 onAction 的按钮需要对应处理者:没有同名宏或加载项时按钮不响应,纯 idMso 路线则不受此限制。
这个工具的边界很清楚:文档级的界面定制,改 XML、保存、校验,不碰宏环境。先把一个样例跑通,再按自己的工作习惯替换按钮和图标。
接下来可以做什么:
- 在测试文档上跑通 "Custom Tab" 样例,把 label 和 imageMso 换成你最常用的三个命令
- 试 "Word - Group on Insert Tab" 样例,熟悉 idMso 和 insertAfterMso 这两个定位属性
- 需要按钮执行自定义逻辑时,为 onAction 写同名 VBA 回调,对照仓库 Samples 目录的用法开始
【免费下载链接】office-custom-ui-editorStandalone tool to edit custom UI part of Office open document file format项目地址: https://gitcode.com/gh_mirrors/of/office-custom-ui-editor
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考