找回密码
 加入
搜索

[系统综合] 诚心求指导:AU3调用EXCEL VBA的代码是多少?

 火.. [复制链接]
 楼主| 发表于 2012-1-26 18:23:42 | 显示全部楼层
本帖最后由 _LK_一生所爱 于 2012-1-26 18:25 编辑



柜号                   卸船                   拆箱/返空                   装箱/提柜                   堆存期
OOLU1098500  2011-12-16 8:51        2011-12-26 8:51        NoDatas                         NA
OOLU1244101  2011-12-12 23:12        2011-12-26 8:51        2011-12-29 8:51         14
OOLU1347521  2011-12-19 20:59        NoDatas                        2011-12-27 8:51         8
OOLU1685766  2012-1-2 21:39        2011-12-26 8:51        NoDatas                         NA
OOLU1980062  2011-12-12 23:12        2011-12-26 8:51        2011-12-29 8:51         14
OOLU2847305  2011-12-12 23:12        2011-12-26 8:51        2011-12-29 8:51         14

果然是高手啊!!很想见识和学习下AU3的速度和效果是怎样的!!

就是在附件的每个小文件里(2500多个)提取“卸船”的时间  之后是 “拆箱”/“收返空箱”的数据(每个表格只是其中的一种)
特殊情况会没有这2个数据,那就提取 “收返重箱” 的数据   再没有就提取 “装船” 的数据。

之后生成上面的数据的样子在一个电子表格里。(没有的数据写上NoDatas或者NA都可以)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2012-1-26 18:27:34 | 显示全部楼层
DEAR kevinch 请问您可以加我QQ吗 ^^

my QQ: 503735347
发表于 2012-1-26 21:18:37 | 显示全部楼层
;#include <array.au3>

$file=FileOpenDialog("请选择数据文件:",@MyDocumentsDir&"","Excel文件 (*.xls?;*.xls)",4)
If @error Then Exit 0

Dim $result[5][1]
If StringInStr($file,"|")>0 Then
        $arr=StringSplit($file,"|",2)
        For $n=1 To UBound($arr)-1
                $arr[$n]=$arr[0]&""&$arr[$n]
        Next
Else
        Dim $arr[2]
        $arr[1]=$file
EndIf
;_ArrayDisplay($arr)

$result[0][0]="柜号"
$result[1][0]="卸船"
$result[2][0]="拆箱/返空"
$result[3][0]="装箱/提柜"
$result[4][0]="堆存期"

$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[5][$t+1]
                $wb=$excel.workbooks.open($arr[$n])
                $rng=0
                With $wb.activesheet
                        $result[0][$t]=.range("d7").value
                        $rng=.cells.find("卸船")
                        If IsObj($rng) Then $result[1][$t]=.range("J"&$rng.row).formula 
                        $rng=0
                        $rng=.cells.find("拆箱")
                        If IsObj($rng) Then
                                $result[2][$t]=.range("J"&$rng.row).formula
                        Else
                                $rng=0
                                $rng=.cells.find("收返空箱")
                                If IsObj($rng) Then
                                        $result[2][$t]=.range("J"&$rng.row).formula
                                Else
                                        $rng=0
                                        $rng=.cells.find("收返重箱")
                                        If IsObj($rng) Then
                                                $result[2][$t]=.range("J"&$rng.row).formula
                                        Else
                                                $rng=0
                                                $rng=.cells.find("装船")
                                                If IsObj($rng) Then
                                                        $result[2][$t]=.range("J"&$rng.row).formula
                                                Else
                                                        $result[2][$t]="NoDatas"
                                                EndIf
                                        EndIf
                                EndIf
                        EndIf
                        $rng=0
                        $rng=.cells.find("装箱")
                        If IsObj($rng) Then
                                $result[3][$t]=.range("J"&$rng.row).formula
                        Else
                                $rng=0
                                $rng=.cells.find("提箱返重")
                                If IsObj($rng) Then
                                        $result[3][$t]=.range("J"&$rng.row).formula
                                Else
                                        $result[3][$t]="NoDatas"
                                EndIf
                        EndIf
                        If $result[2][$t]<>"NoDatas" And $result[3][$t]<>"NoDatas" Then $result[4][$t]=Round(Number($result[3][$t])-Number($result[2][$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
结果不一定是正确的,不过方法就是这样的,试下

评分

参与人数 1金钱 +20 收起 理由
_LK_一生所爱 + 20 非常感谢啊!!高手啊!!

查看全部评分

 楼主| 发表于 2012-1-26 21:54:07 | 显示全部楼层
kevinch 好犀利啊!!!!!果然是高高手啊!!!!!

不过好像我试了只有1800多行数据
不知道怎么优化一下可以一次都提取到呢
提取用了大概10分钟吧 ^^ 另外堆存期不对哦

kevinch 请问我应该看什么书才能自如地控制网页的基本操作和控制EXCEL呢?
发表于 2012-1-26 22:06:25 | 显示全部楼层
1. 数据我只是依你所说的处理一下,至于堆存期是什么意思我也只是按照猜测来做了一下,具体需要你这个真正了解的人自己去修正;
2. 对于au3我也是学习中,不知道是au3的bug还是其他什么原因,fileopendialog里的类型我用1+4的话,全选可见工作簿时会出错,提示找不到文件,所以我用4加上后期的fileexists来代替,也许造成了一些工作簿未处理到;
3. 所有的这些技术都是从网上学习的,现在再还回网络,从未买过什么书,开放的互联网已经是最好的百科全书啦;
4. 感觉用au3可能不如直接在excel里用vba处理好,不过作为一种示范,还是个不错的题目。
 楼主| 发表于 2012-1-26 22:21:14 | 显示全部楼层
1. 不好意思我没有表达清楚,堆存期就是拆箱/返空减去卸船的时间 没有这个数据而有装箱/提柜数据就用这个数据减去卸船的时间,都没有就留空或者NA都可以的 ^^

2. 请问你都是自学编程的吗?你应该是学计算机的大学生吧 ^_^

3. EXCEL自家的东西当然是自家的处理软件厉害啦,毕竟是微软的工程师苦苦设计的啊,我觉得数据处理和数据库对我来说都用EXCEL就够了呢,毕竟我的工作只是数据繁多。

4. 具体的格式比如背景色 边框 黏贴数值 黏贴文本我都不知道怎么用AU3做哦,但是EXCEL的VBA说明很详细,依葫芦画瓢就OK了 不会的话甚至还可以录制宏 非常简单就能弄到代码了,但是AU3的代码 比如怎么运行宏按钮,我到现在还不知道呢~~

5. 你的自学能力真的非常强哦!!我看了AU3帮助文档里面操作IE的,一来全英文不容易阅读,二来基础有限,它的说明也太简单了,例子比较少,我看不懂呢,请问我应该怎么学习这方面的知识呢?
发表于 2012-1-27 21:35:50 | 显示全部楼层
也想学一下,。。。。
发表于 2012-1-28 14:44:38 | 显示全部楼层
看“With”“EndWith”的帮助文件
 楼主| 发表于 2012-1-28 16:15:46 | 显示全部楼层
zitoy 您好,请问应该怎么写呢?

我是新人是小白呢~~还是不懂哦~~
 楼主| 发表于 2012-1-28 23:17:41 | 显示全部楼层
自己顶~~!!!!!
发表于 2012-1-29 00:07:05 | 显示全部楼层
回复 25# _LK_一生所爱

沒實際測試  但是你要找的東西 應該是這個

http://www.autoitx.com/forum.php ... mp;highlight=%BA%EA
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-15 12:07 , Processed in 0.074406 second(s), 18 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表