Office 自动化通常优先推荐 COM,因为 COM 能直接操作对象模型,稳定、可读、可维护。但有些前台命令并不方便通过 COM 写,或者你只是想触发菜单里的某个动作,这时可以了解一下 PostMessage 发送 Office 命令号的玩法。
这篇根据素材里的 Excel、PPT、Word 消息号不完全收录整理而来,只保留相对常用、可解释、适合备查的条目。那些标记为死机、崩溃、无法用于此平台、含义不明的命令,不建议直接放进实战脚本。
一、基本写法
这些命令本质上是向 Office 窗口发送 WM_COMMAND 消息。0x111 就是 WM_COMMAND,后面的数字是命令号。
#Requires AutoHotkey v1.1 #NoEnv #SingleInstance Force ; 对当前活动窗口发送命令号 n := 50 PostMessage, 0x111, %n%, 0,, A
这种写法依赖当前活动窗口。为了减少误发,实战中更建议指定窗口类名。
; Excel 主窗口 PostMessage, 0x111, 50, 0,, ahk_class XLMAIN ; PowerPoint 主窗口 PostMessage, 0x111, 5, 0,, ahk_class PPTFrameClass ; Word 主窗口 PostMessage, 0x111, 107, 0,, ahk_class OpusApp
注意:同一个命令号在 Excel、PPT、Word 里含义不同,不要跨软件混用。
二、什么时候适合用 PostMessage
- 想触发 Office 菜单命令,例如复制、粘贴、打印预览、查找替换。
- 目标操作更接近“点菜单”,而不是读写具体单元格或文档内容。
- 脚本已经在前台配合人工操作,不需要后台精确对象控制。
- 只做辅助热键,而不是长期无人值守批处理。
如果要读写 Excel 单元格、批量处理 Word 内容、导出 PPT,优先还是 COM。PostMessage 更像“前台命令触发器”,不是 Office 自动化的主力方案。
三、Excel 常用命令号
Excel 窗口类名通常是 XLMAIN。下面这些是相对常见、可理解的命令。
; Excel 示例:触发复制 PostMessage, 0x111, 50, 0,, ahk_class XLMAIN
| 命令号 | 作用 |
|---|---|
| 1、475 | 打开 |
| 3、16、144 | 关闭工作簿 |
| 5、965、995、996 | 另存为、发布为 PDF 等 |
| 7、882、883、906 | 页面设置相关 |
| 8、222 | 打印、打印预览 |
| 10、884 | 关闭 Excel 软件 |
| 17 | 打开宏界面 |
| 19 | 录制宏 |
| 21、24、554、555 | 插入分页符 |
| 22 | 设置打印区域 |
| 23 | 设置打印标题 |
| 26、44 | 字体设置 |
| 48 | 撤销 |
| 49 | 剪切 |
| 50 | 复制 |
| 51 | 粘贴 |
| 52 | 清除 |
| 54 | 删除 |
| 55 | 插入 |
| 64、743 | 查找 |
| 91、422 | 分列 |
| 127 | 行高 |
| 130、742 | 替换 |
| 135 | 冻结窗格 |
| 154 | 插入或修改批注 |
| 256 | 显示比例 |
| 281、282 | 移动或复制工作表 |
| 302、401 | 插入或新建工作表 |
| 362、762 | 自动列宽 |
| 367、368 | 隐藏行、显示行 |
| 369 | 自动行高 |
| 370 | 高级筛选 |
| 383、384 | 隐藏工作表、取消隐藏工作表 |
| 385 | 删除当前工作表 |
| 386 | 重命名工作表 |
| 398 | 分类汇总 |
| 409、410 | 插入行、插入列 |
| 413、414 | 向右、向左切换工作表 |
| 447 | 筛选 |
| 525 | 数据有效性 |
| 583、872 | 条件格式规则管理器 |
| 714 | 自动求和 |
| 887 | 删除重复项 |
| 889、890、891 | 按当前值、填充颜色、字体颜色筛选 |
| 971、972 | A 到 Z、Z 到 A 排序 |
| 977 | 名称管理器 |
四、PowerPoint 常用命令号
PowerPoint 主窗口类名一般是 PPTFrameClass。
; PPT 示例:保存当前演示文稿 PostMessage, 0x111, 5, 0,, ahk_class PPTFrameClass
| 命令号 | 作用 |
|---|---|
| 2 | 新建 |
| 3 | 打开 |
| 4、25 | 关闭 |
| 5 | 保存 |
| 6 | 另存为 |
| 7 | 另存为图片 |
| 9 | 幻灯片大小 |
| 11 | 打印 |
| 20 | 折叠或展开功能区 |
| 23 | 发布为 PDF 或 XPS |
| 26、27 | 撤销 |
| 28 | 重复上次动作 |
| 32、33、34 | 剪切、复制、粘贴 |
| 38 | 全选 |
| 39、75 | 复制当前页 |
| 40、41、42、336 | 删除当前页 |
| 44、46 | 查找、替换 |
| 52、53、54、55 | 普通视图、大纲视图、幻灯片浏览、备注页 |
| 56 | 从头开始放映 |
| 57 | 设置放映方式 |
| 59、61、62 | 幻灯片母版、讲义母版、备注母版 |
| 68 | 显示或隐藏标尺 |
| 71 | 缩放 |
| 72、73 | 插入一页 |
| 83 | 插入图片 |
| 85 | 插入表格 |
| 88 | 插入图表 |
| 95、96 | 插入视频、插入音频 |
| 127、619 | 设置背景或形状格式侧栏 |
| 151 | 替换字体 |
| 160 | 宏 |
| 170、391 | 打开 VBE |
| 176 | 动画窗格 |
| 325、326 | 上一张、下一张 |
| 439 | 插入图片 |
| 629、630、631、635、646 | 插入矩形、椭圆、右箭头、三角形、圆角矩形 |
五、Word 常用命令号
Word 主窗口类名一般是 OpusApp。
; Word 示例:触发复制 PostMessage, 0x111, 107, 0,, ahk_class OpusApp
| 命令号 | 作用 |
|---|---|
| 10、11 | 增加字号、减小字号 |
| 14、49 | 删除选中 |
| 23 | 移到文档开头 |
| 29 | Delete |
| 37、38 | 增加缩进、减少缩进 |
| 44、45 | 粗体、斜体 |
| 48 | 删除线 |
| 50、52、51 | 下划线、双下划线 |
| 53、54 | 上标、下标 |
| 57、58、59 | 左对齐、居中、右对齐 |
| 73、74 | 上一页、下一页 |
| 77 | 文档统计信息 |
| 78、79、83 | 新建、打开、另存为 |
| 87、88、96 | 打印、打印预览、打印设置 |
| 97、230、278、490 | 关闭文档或窗口 |
| 106、107 | 剪切、复制 |
| 110、115、120 | 查找、替换、定位 |
| 125、127、320 | 文字转表格 |
| 129、130、132、133 | 插入行、插入列、删除行、删除列 |
| 137、138、139 | 选中表格、当前行、当前列 |
| 149、178 | 样式 |
| 153、453 | 编辑页眉 |
| 159 | 插入批注 |
| 160、637、644 | 插入符号 |
| 161、782 | 插入图片 |
| 162 | 插入文件 |
| 163、236、237 | 日期和时间、当前日期、当前时间 |
| 169、334、324 | 目录、更新目录 |
| 172、358 | 字体对话框 |
| 173 | 段落对话框 |
| 187、426、427、648 | 边框和底纹 |
| 210、617、211、625 | 录制宏、宏 |
| 224 | 字数统计 |
| 233 | 全选 |
| 240、241、548、549、550 | 标题样式 |
| 271 | 显示或隐藏段落标记 |
| 272 | 插入分页符 |
| 296 | 新建空白文档 |
| 297 | 快速打印 |
| 537 | 全屏 |
| 558 | 插入文本框 |
| 798、859 | 打开 VBE |
| 855、864 | 显示或隐藏导航窗格 |
| 857 | 水印 |
六、实战注意事项
- 命令号有 Office 版本差异,同一个编号在不同版本、语言、WPS 环境里可能不同。
- 先在空白文档或测试文件里试,不要直接对正式文件发送未知命令。
- 不要使用素材中标注死机、崩溃、含义不明的命令号。
- 会弹对话框的命令要配合窗口等待,不要连续发送一串命令。
- 后台批量处理优先 COM,PostMessage 更适合前台辅助热键。
- 涉及管理员权限的 Office 窗口时,AHK 权限也要匹配。
结语
PostMessage 操作 Office 命令号,是一种偏前台、偏技巧型的方案。它有时很方便,比如触发复制、查找、打印预览、打开某个对话框;但它不如 COM 直观,也更依赖版本和窗口状态。把它当作备查工具,而不是主要自动化框架,会更稳。
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。

评论(0)