AHK 不只可以操作 Excel,也可以通过 COM 操作 Word 文档。WPS 文字在很多环境里也兼容 Word.Application 这套接口,所以读写文档、插入文字、替换内容、批量调整图片尺寸,都可以用类似思路实现。
先提醒一个常见坑:如果 Word 或 WPS 是管理员权限运行,而 AHK 脚本不是同级权限,COM 连接可能失败。遇到连接失败,先检查权限,再排查代码。
一、连接或新建 Word 实例
#Requires AutoHotkey v1.1
#NoEnv
#SingleInstance Force
SetWorkingDir, %A_ScriptDir%
try
word := ComObjActive("Word.Application")
catch
word := ComObjCreate("Word.Application")
word.Visible := True
MsgBox, 已获取 Word/WPS 文档对象
ComObjActive 用来连接已经打开的 Word;失败后用 ComObjCreate 新建。WPS 是否可用,取决于本机安装和 COM 注册情况。
二、打开、读取、写入文档
file := A_ScriptDir "\测试文档.docx" doc := word.Documents.Open(file) content := doc.Content.Text MsgBox, % content doc.Content.Text := "这是 AHK 写入的新内容。" doc.Save() doc.Close()
doc.Content.Text := ... 会覆盖整个文档内容。只想追加文字时,不要这样写。
三、追加文字和设置格式
doc := word.Documents.Add()
range := doc.Range()
range.InsertAfter("第一段文字。")
range.InsertAfter("第二段文字。")
range := doc.Range(0, 4)
range.Font.Bold := True
range.Font.Size := 16
Word 的核心对象是 Document、Range、Selection。批量生成文档时,优先用 Range;需要围绕当前光标操作时,再考虑 Selection。
四、查找替换
find := doc.Content.Find find.ClearFormatting() find.Replacement.ClearFormatting() find.Text := "客户姓名" find.Replacement.Text := "张三" find.Execute(,,,,,,,,,, 2)
最后的 2 表示替换全部。Word COM 的参数很多,不记得时可以录制 VBA 宏,再把关键对象和方法翻译成 AHK。
五、插入图片并调整尺寸
素材里还有一个 WPS/Word 图片尺寸脚本:遍历选区里的内嵌图片,取消锁定比例,然后统一宽高。
sel := word.Selection
Loop
{
try pic := sel.InlineShapes[A_Index]
catch
break
if (pic.Type = 3)
{
pic.LockAspectRatio := 0
pic.Width := word.CentimetersToPoints(10)
pic.Height := word.CentimetersToPoints(7)
}
}
Word 里尺寸单位常用“磅”。如果要按厘米设置,可以用 word.CentimetersToPoints() 转换。
结语
Word/WPS COM 自动化适合批量生成文档、填模板、替换文本、插图和调整格式。能用对象模型解决的问题,不要用鼠标键盘硬点;但脚本运行前要确认权限、文件路径、保存方式和是否会覆盖原文档。
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。

评论(0)