我个人用excel还是蛮多的,之前都是用vba,现在想用ahk控制对象来替代vba的效果,省的学两个语言麻烦.
本来打算一篇文章写完,不过感觉不知道多久才能发出来,所以一点一点就开始发了,文章内容有借鉴社区同类型的文章以及群友的帮助.
;删除工作表以及关掉excel的屏幕刷新简单的用法
objExcel.Application.DisplayAlerts:= False
i:=1
Loop % objExcel.Sheets.Count
{
if (objExcel.ActiveSheet.Name="hzn")
break
objExcel.ActiveSheet.Delete
}
objExcel.Application.DisplayAlerts:= true
;选中工作表
objExcel.Sheets("hzn").Activate ;使用sheet1的名字
objExcel.Sheet1.Activate ;直接引用sheet1,
objExcel.sheets(1).Activate ;选中工作簿中第一个sheet
objExcel.Sheets.Select ;全选
;工作表改名一定记得加:
objExcel.ActiveSheet.Name:= "hzn"
objExcel.Sheets("何").Name := "哈哈"
;默认从激活的左边添加,可以先激活表格再添加,vba的在某个表格的方向添加的语法没测试成功
objExcel.Sheets.Add
;删除工作表以及关掉excel的屏幕刷新简单的用法
objExcel.Application.DisplayAlerts:= False
i:=1
Loop % objExcel.Sheets.Count
{
if (objExcel.ActiveSheet.Name="hzn")
break
objExcel.ActiveSheet.Delete
}
objExcel.Application.DisplayAlerts:= true
;在新的窗口复制一个当前的工作簿
objExcel.sheets("hzn").Copy
;报告和使用当前表格的工作簿的数量,定义为变量
Shtnum:=objExcel.Sheets.Count
MsgBox,% Shtnum
;活动的工作表
objExcel.ActiveSheet
;提取工作表的名字
i:=1
Loop % objExcel.Sheets.Count
{
objExcel.sheets(i).Range("A1"):= objExcel.sheets(i).Name
i:=i+1
}
;提取表名到单元格,没有foreach遍历所以不能用thisworkbook,勉强实现
book := objExcel.ActiveWorkbook
book.Sheets.Count
{ objExcel.sheets(A_Index).Activate
sheet := book.Sheets(A_Index)
If (sheet.Name != "汇总")
{
objExcel.Range("A" . A_Index) := sheet.Name
}
}
接下来是一些简单的单元格操作
;判断一个单元格值的方法
if (objExcel.Cells(1,1).Value="1.000000")
MsgBox,1
else
MsgBox,2
return
; Range选中区域删除
objExcel.Range("C8:C14").Select
objExcel.Selection.ClearContents
;单元格赋值
objExcel.Range("A1"):= 520
;简单的对字体进行格式设置,做个示范具体的用vba查
objExcel.Cells(1, 1).Font.Bold := TRUE ; 将文本设为黑体
objExcel.Cells(1, 1).Font.Size := 24 ; 将字体大小设为 24
objExcel.Cells(1, 1).Font.ColorIndex := 3 ; 将字体颜色设为红色
objExcel.Cells(1, 1).Font.Italic := TRUE
objExcel.Cells(1, 1).Font.Name := "Times New Roman"
objExcel.Range("A1:B4,D2,F3:G6").Interior.ColorIndex := 9 ;改颜色的暂时只能用这个,另一个测试的有问题
;选中整行整列
objExcel.Range("E5").Activate
objExcel.ActiveCell.EntireRow.Activate
objExcel.ActiveCell.EntireColumn.Activate
;创建包含一个区域的变量
objRange := objExcel.Range("A1:C10")
objCell := objExcel.Range("A1").SpecialCells(11) ;包含所有数据
;使用while循环输入输入数字,比loop简单一些,运用了内部变量循环次数
while, (A_Index < 10)
{
strCell := Chr(A_Index + 64) . "1"
objExcel.Range(strCell).value := A_Index
}
;清除所有,清除内容和格式
objExcel.Range("B1:B10").Clear
objExcel.Range("B1:B10").ClearContents
objExcel.Range("B1:B10").ClearFormats
;合并单元格
objExcel.Range("C8:C14").Select
objExcel.Selection.Merge
objExcel.Selection.UnMerge
;清除空行的根据vba改的ahk,非常复杂
lngFirstRow:=objExcel.ActiveSheet.UsedRange.Row
lngLastRow:=lngFirstRow + objExcel.ActiveSheet.UsedRange.Rows.Count - 1
Loop
{
if (objExcel.Application.WorksheetFunction.CountA(objExcel.Rows(lngLastRow))=0)
{
objExcel.Rows(lngLastRow).Delete
}
lngLastRow:=lngLastRow-1
}until (lngLastRow=lngFirstRow)
都是一些简单的vba改的,可以通过这些示例观察出ahk怎么用对象的,自己多测试测试就发现其实很简单,不要怕错.
不错?
?
入坑,瞌睡送枕头,谢谢谢谢~~
谢谢分享