


本动作用于在 Excel 或 WPS 表格 中快速创建自定义 Ribbon 功能区。通过可视化编辑器设计按钮布局,一键将配置注入到 .xlsm / .xlam 文件中,同时自动修复 VBA 宏签名使其可被按钮正确调用。
.xlsm 或 .xlam 文件必须添加的 DLL 引用(在 Quicker C# 步骤的「引用」设置中):
/* 添加以下两行 DLL 引用路径 */ C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.IO.Compression\v4.0_4.0.0.0__b77a5c561934e089\System.IO.Compression.dll C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.IO.Compression.FileSystem\v4.0_4.0.0.0__b77a5c561934e089\System.IO.Compression.FileSystem.dll
Sub 过程名完全一致(不区分大小写)。名称不匹配的宏将无法被按钮调用。control As IRibbonControl 参数),支持空参和有参两种情况。已有 IRibbonControl 参数的宏会被自动跳过,不会重复修改。RibbonCallbacks 等额外模块,不会影响原有代码逻辑。动作会解析 customUI XML 中所有 onAction 属性引用的宏名,在工作簿中找到对应的 Sub 后自动修改签名。修改规则如下:
| 修改前(原始签名) | 修改后(Ribbon 回调签名) |
|---|---|
Sub msg1() |
Sub msg1(control As IRibbonControl) |
Sub msg2(s As Long) |
Sub msg2(s As Long, control As IRibbonControl) |
Public Sub ExportData(x As String) |
Public Sub ExportData(x As String, control As IRibbonControl) |
Sub btn1(control As IRibbonControl) |
跳过(已有正确签名) |
* getLabel、getEnabled、getVisible 等特殊回调不在修改范围内。
| 格式 | 说明 | 典型用途 |
|---|---|---|
.xlsm |
启用宏的工作簿 | 为单个文件添加自定义功能区 |
.xlam |
Excel/WPS 加载项 | 创建通用加载项,所有工作簿均可使用该功能区 |
动作自动检测系统上安装的应用(通过 COM ProgID 注册表判断),无需手动设置。检测优先级:
| 场景 | 自动选择 |
|---|---|
| 仅安装了 WPS | WPS (KET.Application) |
| 仅安装了 Excel | Excel (Excel.Application) |
| 两者都已安装 | WPS(默认 WPS 优先) |
| 手动指定了 TargetApp 变量 | 以用户指定为准 |
TargetApp,值设为 WPS 或 EXCEL 来手动覆盖。按钮默认使用内置图标(通过 imageMso 引用)。如需使用自定义图标,请按以下规范准备:
MyIcon.pngicons 文件夹* 自定义图标需要工作簿中已包含 Ribbon_LoadImage 回调函数才能生效。
Q:提示「剪贴板中没有有效的 customUI XML 数据」?
请确保先在前端编辑器中点击「确认生成」,看到「已写入剪贴板」提示后再运行 Quicker 动作。不要在两次操作之间复制其他内容。
Q:提示「Cannot access VBProject」?
请开启「信任对 VBA 工程对象模型的访问」。WPS 路径:工具 → 选项 → 安全性 → 宏安全性 → 信任中心设置 → 宏设置。Excel 路径:文件 → 选项 → 信任中心 → 信任中心设置 → 宏设置。
Q:按钮点击后没有反应?
请检查按钮的「宏名称」是否与 VBA 模块中的 Sub 名称一致(不含模块前缀)。在 VBA 编辑器中确认该 Sub 已被自动修改为 Sub xxx(control As IRibbonControl) 签名。
Q:注入后原有代码被修改了?
动作仅会在 XML 中引用的宏的签名行追加 control As IRibbonControl 参数,不会修改其他代码。如需恢复原始签名,手动删除参数即可。
Q:提示「VBA 注入超时(30秒)」?
通常是 WPS/Excel 弹出了宏安全性警告弹窗。确认弹窗后关闭,重新运行动作即可。如果持续超时,检查杀毒软件是否阻止了脚本执行。