这个系列主要是作为我的学习笔记,记录一下代码和心得防止丢失.
部分代码来自ahk群内热心群友,感谢诸位群友帮助 岁月如歌,僵尸,蜜罐哥,汤瞬,dbgba,无名,小马哥,枫叶,空 ,飞跃大佬等(排名不分先后).
首先感谢飞跃大佬的函数,基于飞跃大佬的成果完成一系列
最近用excel的获取对象函数实现了几个小功能,主要就是把网页上数据粘贴到表格要么就是表格粘贴到网页.
loop 100
{
;简单的调用excel模型
objExcel:=Excel_Get() ;-- 获取COM对象
y:=objExcel.ActiveCell.Row
x:=objExcel.ActiveCell.Column ;-- 获取当前激活的单元格的行号(y)、列号(x)
arr:=[] ;-- 读取当前行的所有文本数据到一个数组中(取文本值用“.Text”)
Loop, % x-1
arr.Push( objExcel.Cells(y,A_Index).Text )
名称:=arr[3]
数量:=arr[8]
单价:=arr[9]
判断:=arr[14]
if 判断=""
break
SendInput,%名称%
Sleep 500
SendInput,{Enter 2}
SendInput,%数量%
Sleep 500
SendInput,{Enter 2}
SendInput,%单价%
Sleep 500
SendInput,{Enter 3}
Sleep 500
objExcel.Cells(y,15).Value:="已录入"
Sleep 500
objExcel.Cells(y+1,15).Activate
MsgBox,成功下来
}
return
简单展示一个录入入库单的示例.
y:=objExcel.ActiveCell.Row
x:=objExcel.ActiveCell.Column
arr:=[] ;– 读取当前行的所有文本数据到一个数组中(取文本值用“.Text”)
Loop, % x-1
arr.Push( objExcel.Cells(y,A_Index).Text )
有段时间我发现我用excel函数老有错误不知道怎么发生的,后来知道了,上面这几句话不要放在循环的外面,一定要在loop的里面才行.
这几句话实际上就是给xy赋予当前激活单元格的行列号的作用,很多地方缺了这个直接就错误了.
还有就是这个arr[1]这样的表示第几个单元格的使用,比如a:=arr[1]一定要加:,不加的话也是不太对这里,这里我也不太清楚为啥一定要加,有了解的老哥能帮忙解答一下吗?
objExcel.Cells(y,15).Value:=”已录入”
然后就是这个,可以自己更改单元格里面的数字,实际上这就是和vba里面的cell()语法一样的,怎某些情况下固定一个数字填表比较准确.
总结一下其实ahk操作excel还是通过对象,最近发现可以先在excel里面录制宏或者写出vba然后改一改拿到ahk里面,不过只有对象才能拿过来,然后一些宏录制出来的东西也是不行的.
感谢分享
感谢分享~~