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 的核心对象是 DocumentRangeSelection。批量生成文档时,优先用 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 自动化适合批量生成文档、填模板、替换文本、插图和调整格式。能用对象模型解决的问题,不要用鼠标键盘硬点;但脚本运行前要确认权限、文件路径、保存方式和是否会覆盖原文档。

声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。