在用ahk操作excel文件中,很多场景都是使用设置好头部格式的excel文件,把这个表格文件作为一个模板,逐行填充数据到表格,再复制该表格中设置好格式的第一行单元格格式到填充的数据,使得整个表格格式统一,这样操作可以省略生成的表格还要去设置字体,颜色,表格线,以及打印格式成A4纸格式等,效率高而速度快,但查找互联网,发现没有复制excel表格格式的ahk例子,逐按照excel vba的语法,试验测试成功。写下这个例子,节省时间。
上图所示excel表格,把A2的格式复制到A3:A10,代码如下
; excel文件为a.xlsx
;把A2单元格的格式复制到A3:A10
;生成一个新的文件b.xlsx
;其实主要是PasteSpecial(-4122,-4142)这句,输入vba例子中的"xlPasteFormats"死活不对,必须用数值才对。
excel := ComObjCreate("Excel.Application")
CurrentWorkbook := excel.Workbooks.Open(A_ScriptFullPath . "\a.xlsx")
excel.Sheets(1).Select
excel.ActiveSheet.Range("A2").Copy
excel.ActiveSheet.Range("A3:A10").PasteSpecial(-4122,-4142)
excel.ActiveWorkbook.SaveAs(A_ScriptFullPath . "\b.xlsx")
excel.Workbooks.close
excel.quit()
下图为代码运行生成表格的结果
xlPasteFormats在vba中是一个已经定义赋值的常量,在AHK中不能直接用