Excel COM 最大的优势,是可以直接调用 Excel 对象模型。工作表、单元格、行列、格式、打印设置,很多操作都不需要模拟鼠标键盘,直接改对象属性或调用方法即可。
这篇把素材包里的常用片段整理成速查式文章。它不追求覆盖所有 VBA 对象,而是先把 AHK 写 Excel 自动化时最常用的一批动作讲清楚。
一、获取对象和当前表
#Requires AutoHotkey v1.1
#NoEnv
#SingleInstance Force
xl := ComObjActive("Excel.Application")
wb := xl.ActiveWorkbook
sheet := xl.ActiveSheet
MsgBox, % "工作簿:" wb.Name Chr(10) "工作表:" sheet.Name
后面所有操作都建议先明确对象:是当前工作簿,还是指定工作簿;是当前表,还是指定表。不要在复杂脚本里到处直接写 ActiveSheet,否则窗口一切换就容易误操作。
二、工作表:选中、改名、添加、删除
xl.Sheets("Sheet1").Activate
xl.ActiveSheet.Name := "汇总"
xl.Sheets.Add()
xl.DisplayAlerts := False
xl.Sheets("临时表").Delete
xl.DisplayAlerts := True
删除工作表时会弹确认框,脚本里通常临时关闭 DisplayAlerts。关闭之后一定要恢复,不然 Excel 后续操作可能少了重要提醒。
三、单元格赋值和清除
sheet.Range("A1").Value := "姓名"
sheet.Cells(1, 2).Value := "分数"
sheet.Range("A2:B10").ClearContents
sheet.Range("A2:B10").ClearFormats
Range("A1") 直观,Cells(行,列) 适合循环。清除内容和清除格式是两件事,别把 Clear、ClearContents、ClearFormats 混用。
四、字体、颜色、数字格式
rg := sheet.Range("A1:B1")
rg.Font.Bold := True
rg.Font.Size := 12
rg.Interior.ColorIndex := 6
rg.NumberFormatLocal := "0.00_ "
颜色可以用 ColorIndex,也可以用 RGB 值。做办公脚本时,很多格式枚举值可以从 VBA 录制宏里查,录一遍宏再改成 AHK COM 写法,效率很高。
五、隐藏行列和页面设置
sheet.Columns("A:W").Hidden := True
sheet.Columns("A:W").Hidden := False
sheet.PageSetup.Orientation := 2
sheet.PageSetup.FitToPagesTall := 1
sheet.PageSetup.FitToPagesWide := 1
sheet.PageSetup.PrintArea := "$A$1:$F$12"
页面设置里的数字大多来自 Excel VBA 枚举。比如横向、纵向、居中、靠左,这些值可以查微软 VBA 文档,也可以通过录制宏观察。
六、找最后一行和空行处理
删除空行时,通常要从下往上删,避免删掉一行后行号变化导致漏删。
firstRow := sheet.UsedRange.Row
lastRow := firstRow + sheet.UsedRange.Rows.Count - 1
Loop
{
if (xl.WorksheetFunction.CountA(sheet.Rows(lastRow)) = 0)
sheet.Rows(lastRow).Delete
lastRow--
} until (lastRow = firstRow)
结语
AHK 写 Excel COM,最重要的是把 Excel 当成对象模型,而不是当成一个需要鼠标点的界面。先掌握工作簿、工作表、Range、Cells、Rows、Columns,再配合 VBA 录制宏查属性和方法,就能覆盖大量办公自动化需求。
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。

评论(0)