柜号 卸船 拆箱/返空 装箱/提柜 堆存期
OOLU10985002011-12-16 8:51 2011-12-26 8:51 NoDatas NA
OOLU12441012011-12-12 23:12 2011-12-26 8:51 2011-12-29 8:51 14
OOLU13475212011-12-19 20:59 NoDatas 2011-12-27 8:51 8
OOLU16857662012-1-2 21:39 2011-12-26 8:51 NoDatas NA
OOLU19800622011-12-12 23:12 2011-12-26 8:51 2011-12-29 8:51 14
OOLU28473052011-12-12 23:12 2011-12-26 8:51 2011-12-29 8:51 14
果然是高手啊!!很想见识和学习下AU3的速度和效果是怎样的!!
就是在附件的每个小文件里(2500多个)提取“卸船”的时间之后是 “拆箱”/“收返空箱”的数据(每个表格只是其中的一种)
特殊情况会没有这2个数据,那就提取 “收返重箱” 的数据 再没有就提取 “装船” 的数据。
之后生成上面的数据的样子在一个电子表格里。(没有的数据写上NoDatas或者NA都可以) DEAR kevinch 请问您可以加我QQ吗 ^^
my QQ: 503735347 ;#include <array.au3>
$file=FileOpenDialog("请选择数据文件:",@MyDocumentsDir&"\","Excel文件 (*.xls?;*.xls)",4)
If @error Then Exit 0
Dim $result
If StringInStr($file,"|")>0 Then
$arr=StringSplit($file,"|",2)
For $n=1 To UBound($arr)-1
$arr[$n]=$arr&"\"&$arr[$n]
Next
Else
Dim $arr
$arr=$file
EndIf
;_ArrayDisplay($arr)
$result="柜号"
$result="卸船"
$result="拆箱/返空"
$result="装箱/提柜"
$result="堆存期"
$excel=ObjCreate("excel.application")
$excel.visible=False
$excel.displayalerts=False
For $n=1 To UBound($arr)-1
If FileExists($arr[$n]) Then
$t=UBound($result,2)
ReDim $result[$t+1]
$wb=$excel.workbooks.open($arr[$n])
$rng=0
With $wb.activesheet
$result[$t]=.range("d7").value
$rng=.cells.find("卸船")
If IsObj($rng) Then $result[$t]=.range("J"&$rng.row).formula
$rng=0
$rng=.cells.find("拆箱")
If IsObj($rng) Then
$result[$t]=.range("J"&$rng.row).formula
Else
$rng=0
$rng=.cells.find("收返空箱")
If IsObj($rng) Then
$result[$t]=.range("J"&$rng.row).formula
Else
$rng=0
$rng=.cells.find("收返重箱")
If IsObj($rng) Then
$result[$t]=.range("J"&$rng.row).formula
Else
$rng=0
$rng=.cells.find("装船")
If IsObj($rng) Then
$result[$t]=.range("J"&$rng.row).formula
Else
$result[$t]="NoDatas"
EndIf
EndIf
EndIf
EndIf
$rng=0
$rng=.cells.find("装箱")
If IsObj($rng) Then
$result[$t]=.range("J"&$rng.row).formula
Else
$rng=0
$rng=.cells.find("提箱返重")
If IsObj($rng) Then
$result[$t]=.range("J"&$rng.row).formula
Else
$result[$t]="NoDatas"
EndIf
EndIf
If $result[$t]<>"NoDatas" And $result[$t]<>"NoDatas" Then $result[$t]=Round(Number($result[$t])-Number($result[$t]),0)
EndWith
$wb.close(False)
EndIf
Next
;_ArrayDisplay($result)
$excel.visible=True
$wb=$excel.workbooks.add
With $wb.activesheet
.columns("B:D").numberformatlocal="yyyy-m-d hh:mm"
For $n=0 To UBound($result)-1
For $i=0 To UBound($result,2)-1
.cells($i+1,$n+1)=$result[$n][$i]
Next
Next
.columns.autofit
EndWith
$excel.displayalerts=True
$wb=0
$excel=0结果不一定是正确的,不过方法就是这样的,试下 kevinch 好犀利啊!!!!!果然是高高手啊!!!!!
不过好像我试了只有1800多行数据
不知道怎么优化一下可以一次都提取到呢
提取用了大概10分钟吧 ^^ 另外堆存期不对哦
kevinch 请问我应该看什么书才能自如地控制网页的基本操作和控制EXCEL呢? 1. 数据我只是依你所说的处理一下,至于堆存期是什么意思我也只是按照猜测来做了一下,具体需要你这个真正了解的人自己去修正;
2. 对于au3我也是学习中,不知道是au3的bug还是其他什么原因,fileopendialog里的类型我用1+4的话,全选可见工作簿时会出错,提示找不到文件,所以我用4加上后期的fileexists来代替,也许造成了一些工作簿未处理到;
3. 所有的这些技术都是从网上学习的,现在再还回网络,从未买过什么书,开放的互联网已经是最好的百科全书啦;
4. 感觉用au3可能不如直接在excel里用vba处理好,不过作为一种示范,还是个不错的题目。 1. 不好意思我没有表达清楚,堆存期就是拆箱/返空减去卸船的时间 没有这个数据而有装箱/提柜数据就用这个数据减去卸船的时间,都没有就留空或者NA都可以的 ^^
2. 请问你都是自学编程的吗?你应该是学计算机的大学生吧 ^_^
3. EXCEL自家的东西当然是自家的处理软件厉害啦,毕竟是微软的工程师苦苦设计的啊,我觉得数据处理和数据库对我来说都用EXCEL就够了呢,毕竟我的工作只是数据繁多。
4. 具体的格式比如背景色 边框 黏贴数值 黏贴文本我都不知道怎么用AU3做哦,但是EXCEL的VBA说明很详细,依葫芦画瓢就OK了 不会的话甚至还可以录制宏 非常简单就能弄到代码了,但是AU3的代码 比如怎么运行宏按钮,我到现在还不知道呢~~
5. 你的自学能力真的非常强哦!!我看了AU3帮助文档里面操作IE的,一来全英文不容易阅读,二来基础有限,它的说明也太简单了,例子比较少,我看不懂呢,请问我应该怎么学习这方面的知识呢? 也想学一下,。。。。 看“With”“EndWith”的帮助文件 zitoy 您好,请问应该怎么写呢?
我是新人是小白呢~~还是不懂哦~~ 自己顶~~!!!!! 回复 25# _LK_一生所爱
沒實際測試但是你要找的東西 應該是這個
http://www.autoitx.com/forum.php?mod=viewthread&tid=13074&highlight=%BA%EA
页:
1
[2]