找回密码
 加入
搜索
查看: 3801|回复: 13

[AU3基础] 关于在AU3中批量打开excel文件并进行单元格计算

  [复制链接]
发表于 2012-4-5 13:11:30 | 显示全部楼层 |阅读模式
批量选择后,_ExcelBookOpen好像无法打开$arrFileList[$iFileIndex]
求大侠帮忙解决
Dim $strFiles = FileOpenDialog("选择一个或多个温度数据文件", @WindowsDir & "", "表格文件(*.xlsx)", 1+4)
If @error Or $strFiles = "" Then
        MsgBox(4096, "警告", "选择文件失败!")
        Exit
EndIf
;将多个文件路径分割
Dim $arrFileList = StringSplit($strFiles, "|")
Dim $iFileIndex = 1
For $iFileIndex = 1 To $arrFileList[0]

Local $sFilePath1 = $arrFileList[$iFileIndex]
Local $oExcel = _ExcelBookOpen("$sFilePath1")
        _ExcelWriteCell($oExcel, "=AVERAGE(LARGE(B6:FE125,51))", 1, 10)
        _ExcelBookSaveAs($oExcel, $strFiles, "xlsx", 0, 1) 
_ExcelBookClose($oExcel) ; And finally we close out
Next

MsgBox(4096, "提示", "操作完成!")
发表于 2012-4-5 15:32:32 | 显示全部楼层

#Include <Excel.au3>
发表于 2012-4-5 15:35:43 | 显示全部楼层
不支持xlsx格式
支持xls格式
发表于 2012-4-5 15:42:38 | 显示全部楼层
lz看看这样能不能打开xlsx,我这没有office 07 没法测


Dim $strFiles = FileOpenDialog("选择一个或多个温度数据文件", @WindowsDir & "\", "Microsoft Office Excel 文件(*.xl*)", 1+4)

; "Microsoft Office Excel 文件(*.xl*)" 从 excel 03 的打开对话框里抄来的
 楼主| 发表于 2012-4-5 16:14:43 | 显示全部楼层
感谢LS的回答。

我打开单个都是可以的,就是打开一个文件夹下的几个,就打开不了了。
发表于 2012-4-5 16:29:44 | 显示全部楼层
个人理解:
和IE操作一样, 此类的对象操作, 都默认是一个对象吧?
如果对多个对象操作, 是不是要自己先建立多个'对象'?
 楼主| 发表于 2012-4-5 21:14:46 | 显示全部楼层
恩,我的想法是.用循环来访问每个存在数组中的地址元素.
访问一个来进行打开,计算,保存,关闭,然后再访问下一个.
可是_ExcelBookOpen里会把数组$arrFileList[$iFileIndex]的中括号认为是设定访问密码的格式.
发表于 2012-4-5 21:53:58 | 显示全部楼层
只能一个个打开,不能用数组做参数来打开
 楼主| 发表于 2012-4-6 00:11:39 | 显示全部楼层
那请问一下还有什么可以解决的方案,可以实现这个自动对各个表格内数据计算的功能?在这个问题上弄了半个月了
发表于 2012-4-6 12:06:11 | 显示全部楼层
给楼主参考一下

本帖子中包含更多资源

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

×
发表于 2012-4-6 15:02:30 | 显示全部楼层
回复 9# 006l
如果不涉及跨工作簿引用的问题的话,简单的一个个操作就行了,全部同时打开在数量不多时也是可以的,不过不建议这样做
发表于 2012-4-7 00:19:50 | 显示全部楼层
本帖最后由 peterju 于 2012-4-7 00:23 编辑

使用 FileOpenDialog 返回的字串在選擇一個檔案與多個時是不一樣的,選擇多個檔案返回後並用 StringSplit 得到的數組 arrFileList[1] 指的是路徑,故樓主要將 for 的迴圈起始值從2開始,$sFilePath1的指定要記得加上路徑,修改如下
......
Dim $arrFileList = StringSplit($strFiles, "|", 1)
.....
For $iFileIndex = 2 To $arrFileList[0]
        Local $sFilePath1 = $arrFileList[1] & $arrFileList[$iFileIndex]
......
 楼主| 发表于 2012-4-11 14:52:56 | 显示全部楼层
经过LS各位的帮助,问题已经顺利解决啦~,特别谢谢peterju,启发很大
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-20 13:52 , Processed in 0.096889 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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