这是 OfficeAddin 的公开创作包,面向希望编写、校验和分享 Office 自动化函数的用户。它包含 Host-first VBScript、Host API 契约、工作流示例、提示词、Schema、校验工具和贡献文档。
- 官网:https://clippad.vip/
- 下载:https://clippad.vip/download
- 官网论坛:https://clippad.vip/community
- 支持中心:https://clippad.vip/support
论坛适合讨论脚本效果、Office 版本兼容性和贡献建议;不要在公开 Issue 或论坛贴出客户文档、账号、Token、内部地址或完整诊断日志。
OfficeAddin 是运行在 Windows 桌面版 Word、Excel 和 PowerPoint 中的插件。它把重复的 Office 操作整理成可复用命令:
- Word:正文和标题排版、空白清理、目录/页码、表格和审阅痕迹处理;
- Excel:区域清洗、筛选、去重、公式审计、汇总和副本导出;
- PowerPoint:标题/页脚统一、对象对齐、图片整理、备注和大纲导出;
- 通用能力:读取当前上下文、剪贴板、预检、预览、写入计划和回滚;
- AI 辅助:根据用户任务生成或修改 Host-first VBS,但生成结果必须经过人工复核和校验。
本仓库是公共函数和契约仓库,不包含产品 DLL、后端、签名材料或商业运营资料。
下载本仓库 ZIP,或克隆仓库。先从 vbs/common、vbs/word、vbs/excel、vbs/powerpoint 选择脚本。
仓库中的 vbs/ 是便于分类和审查的源码目录;插件运行时扫描的是安装目录下的一级目录:
<OfficeAddin 安装目录>\VBA Script\*.vbs
请把需要安装的 .vbs 文件直接复制到 VBA Script 根目录,不要只复制 vbs\word 这个子目录,也不要保留多层子目录。当前命令目录索引只枚举 VBA Script\*.vbs,不会递归扫描 vbs\word\*.vbs。
文件名(不含 .vbs)是命令的稳定 ID。不要在同一目录放两个同名脚本;更新脚本时覆盖原文件即可。
在公共包根目录运行整包校验:
powershell -NoProfile -ExecutionPolicy Bypass `
-File .\tools\validate_public_pack.ps1只检查新写的一个脚本:
powershell -NoProfile -ExecutionPolicy Bypass `
-File .\tools\validate_public_pack.ps1 `
-ScriptPath .\path\to\MyFunction.vbs校验会检查 UTF-8 BOM、头部注释、Function Main()、危险旧式 COM/脚本入口和可解析的结果约定。它不能代替真实 Office 测试。
通常重启 Word/Excel/PowerPoint 并重新打开命令目录即可。如果新文件仍未出现,可以用随安装包提供的 VbsProxy.exe 强制重建索引:
& "<OfficeAddin 安装目录>\VbsProxy.exe" `
-index `
-scriptdir "<OfficeAddin 安装目录>\VBA Script" `
-force `
-output "$env:TEMP\vbs-index-result.json"成功后会在 VBA Script 目录生成 vbs_command_index.json(或在用户配置目录使用后备索引)。这个索引是运行时缓存,不要提交到公共仓库。
关闭并重新打开目标 Office 应用,在插件的命令编辑器/命令搜索中查找脚本。中文界面通常显示去掉 Host预设_ 和应用前缀后的文件名;英文界面优先显示头部的 函数名: 值。
流程可以简化为:
- 插件定位
VBA Script目录并枚举一级.vbs文件; - 读取文件开头连续的单引号注释,建立标题、描述、适用应用和搜索元数据;
- 在命令目录中展示脚本;
- 执行脚本的无参数
Function Main(); - 脚本通过插件注入的
Host对象访问 Office、剪贴板、预检和写入计划; Main()返回字符串,建议是包含ok、code、message或data的 JSON。
Host-first 的重点是:脚本不要自己 CreateObject("Word.Application"),也不要通过 WScript.Shell、FileSystemObject 等绕过插件的安全边界。Office 对象、文件写入、剪贴板和事务能力应使用 host/host-api-v1.json 中列出的 Host 方法。
下面的示例同时满足插件解析和英文显示要求:
' 函数名: HostGetSelectionText
' 描述: 读取当前选区文本 / Read the current selection text
' 适用应用: Word|Excel|PowerPoint
' 搜索范围: 选区
' 搜索对象: 文本
' 风险等级: readonly
' 写入模式: none
' 所需 Host: GetSelection,JsonEscape
' License: Apache-2.0
Option Explicit
Function Main()
On Error Resume Next
Err.Clear
Dim selectedText
selectedText = Host.GetSelection()
If Err.Number <> 0 Then
Main = "{""ok"":false,""code"":""E_GET_SELECTION"",""message"":""Unable to read selection""}"
Exit Function
End If
Main = "{""ok"":true,""text"":""" & Host.JsonEscape(selectedText) & """}"
End Function函数名是显示名,不是入口函数;入口函数必须仍然叫 Main。更多生成提示词见 prompts/vbs-system-prompt.md,生成示例见 examples/vbs/README.md。
头部必须放在任何 Option Explicit、变量声明或可执行代码之前。允许空行,但从第一个非空行开始,必须连续使用单引号注释;一旦出现代码,后面的注释就不再作为元数据读取。
程序会读取的标准字段:
| 字段 | 是否建议 | 用途 |
|---|---|---|
函数名: |
必须 | 英文界面的显示名;建议使用稳定的英文标识符 |
描述: 或 Description: |
必须 | 命令描述;描述: 优先于英文别名 |
适用应用: |
必须 | Word、Excel、PowerPoint,多个值用 | 分隔 |
搜索范围: |
强烈建议 | 例如 选区、全文、当前工作簿 |
搜索对象: |
强烈建议 | 例如 文本、表格、幻灯片 |
标题:/Title:、说明:、App:、Scope: 等是兼容别名,但公共贡献应优先使用上表中的标准写法。风险等级、写入模式、所需 Host 和 License 主要用于人工审查、生成器和文档,不要误以为它们会自动授予权限。
具体格式和字段约束见 docs/vbs-contribution-format.md。
推荐顺序:
- 给生成器提供
host/host-api-v1.json; - 明确目标 Office、输入、输出、是否写入、风险和回滚方式;
- 要求生成 UTF-8 BOM、头部注释和无参数
Function Main(); - 先运行单文件校验,再运行整包校验;
- 在 Word、Excel、PowerPoint 的 staging 客户端中做真实测试;
- 通过 Issue/PR 提交脚本和测试说明。
完整步骤见 docs/testing.md 和 CONTRIBUTING.md。
- 脚本不显示:确认扩展名是
.vbs,文件直接位于VBA Script根目录,并重启 Office 或强制重建索引。 - 中文乱码:确认文件是 UTF-8 BOM,不要保存成 ANSI/GBK,也不要删除 BOM。
- 英文界面显示中文:把头部
函数名:的值改成英文;中文界面仍主要显示文件名。 - 脚本无法执行:确认存在无参数
Function Main(),并检查调用的每个Host.*方法是否存在于 Host API 契约。 - 校验失败:先按报错修复结构,再在真实 Office 中测试;
cscript只能做有限的语法/隔离测试,不能模拟真实 Host 和 COM 对象。
本目录中的原创 VBS、示例、Host 契约、提示词和文档默认采用 Apache-2.0,详见 LICENSE。只运行你信任的脚本;写入文档或文件的脚本应先预检、预览、确认,并尽量提供备份或回滚路径。