[已解决]如何加快Excel处理速度~
本帖最后由 pdp320921 于 2011-5-27 22:44 编辑$o_Excel=objcreate("excel.application")
$o_Excel.visible=true
$o_Workbook=$o_Excel.workbooks.add
Send("^v");从其他文件中粘贴数据过来
with $o_Workbook
For $i = 1 To 1000
If _ExcelReadCell($o_Workbook, 1, 3) = 100 Then ExitLoop
If_ExcelReadCell($o_Workbook, $i, 3) = 100And _ExcelReadCell($o_Workbook, $i-1, 3) <> 100 Then
....
....
对于上述代码,发现一个问题,在with...Endwith里面的语句执行的很慢,是for循环的缘故还?有没方法改善?
求解~ 给出示例附件,帮你试下看看。 回复 2# kevinch
复制附件中的数据到Excel中,以实现如图片中曲线~(Y坐标是以C1:C$i,i是数据为100时的行数,X坐标是A1:A$i)
$h_Log=FileOpen(@ScriptDir&"\battery.log",0)
$s_Str=FileRead($h_Log)
FileClose($h_Log)
ClipPut($s_Str)
$o_Excel=ObjCreate("excel.application")
$o_Excel.visible=True
$o_Workbook=$o_Excel.workbooks.add
with $o_Workbook.activesheet
.paste(.range("a1"))
endwithTab在excel中本就是分隔符,所以直接用就行了,这个试下。 回复 4# kevinch
感谢回复,可能我没讲清楚?
数据复制到Execel中我已经实现,我的问题是我执行 For $i = 1 To 400
If _ExcelReadCell($o_Workbook, 1, 3) = 100 Then ExitLoop
If_ExcelReadCell($o_Workbook, $i, 3) = 100And _ExcelReadCell($o_Workbook, $i-1, 3) <> 100 Then
Send("{ALTDOWN}")
Send("{ALTUP}")
...发现有很长的延时~~
换句话说,如何用的别的方法去取代_ExcelReadCell($o_Workbook, $i, 3)来读取某个单元格的内容 使读取的时间加快~~?? 说说你要的效果,代码看不懂!要读取单元格内容,然后做什么用,判断什么? $h_Log=FileOpen(@ScriptDir&"\battery.log",0)
$s_Str=FileRead($h_Log)
FileClose($h_Log)
ClipPut($s_Str)
$o_Excel=ObjCreate("excel.application")
$o_Excel.visible=True
$o_Workbook=$o_Excel.workbooks.add
with $o_Workbook.activesheet
.paste(.range("a1"))
for $Rng in .range("a1:a"&.cells(.rows.count,1).end(3).row)
if $Rng.value>1000 then
msgbox(0,"","单元格"&$Rng.address(0,0)&"的值大于1000了,退出循环")
ExitLoop
EndIf
Next
endwith循环判断的例子 回复 7# kevinch
感谢回复!
算了,还是没讲清楚~
那请教个问题:
如何读取某一单元格的内容判断是否大于一数值(譬如100)并获得该单元格的行数? 单元格范围?
7楼例子里的地址.address(0,0)换成.row就是行号啦 回复 9# kevinch
换了还是不行~~~ 回复kevinch
换了还是不行~~~
pdp320921 发表于 2011-5-23 09:39 http://www.autoitx.com/images/common/back.gif
不行的结果是什么?只说不行让我怎么帮你? EXCEL本身就有VBA啊 既然数据已导入EXCEL 用VBA不好吗 回复 11# kevinch
好了~` for $Rng in .range("a1:a"&.cells(.rows.count,1).end(3).row)
$Rng.address(0,0)各代表什么意思啊? for $Rng in .range("a1:a"&.cells(.rows.count,1).end(3).row)循环从A1到A列有数据的最后一个单元格之间的各个单元格,$Rng得到的是各个单元格对象$Rng.address(0,0)$Rng的地址,以非绝对引用格式显示,你可以把各个0分别换成1试下 回复 14# kevinch
感谢回复,感谢解答~
基本了解了~
这个是从VBA转成AU3的吗?
页:
[1]
2