xyold1 发表于 2015-4-21 10:27:28

_ExcelReadSheetToArray读取含有#REF的excel表格出错的问题

#include <Excel.au3>
#include <Array.au3>
Local $sFilePath1 = @ScriptDir & "\测试.xlsx" ;这个文件应该已经存在
Local $oExcel = _ExcelBookOpen($sFilePath1)

Local $aArray = _ExcelReadSheetToArray($oExcel) ;使用默认参数
_ArrayDisplay($aArray, "使用默认参数")
_ExcelBookClose($oExcel) ; 关闭工作表, 退出
_ExcelReadSheetToArray这个函数读某个表格总是使au3无响应而退出,后来发现是表格内有公式错误引起的,附件内有测试脚本和Excel文档,请教如果不修改excel如何避免这类错误

ap112 发表于 2015-4-21 10:39:31





只是读不出来而已,不会报错,也不会死掉

ap112 发表于 2015-4-21 10:42:19

MsgBox(0,0,$oExcel.ActiveSheet.range("A1").value)上面的返回值是0

xyold1 发表于 2015-4-21 10:47:41

好奇怪,我这脚本都卡死了

xyold1 发表于 2015-4-21 10:51:15


AU3的版本问题吗

xyold1 发表于 2015-4-21 10:52:42

回复 3# ap112


    你的Au3什么版本啊

netegg 发表于 2015-4-21 11:17:06

貌似现在的excel udf还不支持xlsx格式

xyold1 发表于 2015-4-21 11:24:45

回复 7# netegg


    我用xls格式 也阵亡了{:face (394):}

xyold1 发表于 2015-4-21 11:38:37


换了个EXCEL文档再把ExcelReadSheetToArray 提取出来运行到
Local $aArray = $oExcel.ActiveSheet.Range($oExcel.Cells($iStartRow, $iStartColumn), $oExcel.Cells($iLastRow, $iLastColumn)).Value
就死了{:face (189):}

netegg 发表于 2015-4-21 12:43:17

那就等kevinch吧

netegg 发表于 2015-4-21 12:44:32

或者试试排错

ap112 发表于 2015-4-21 13:21:04

v3.2.12.0


你有什么需求,也许可以换一个思路

xyold1 发表于 2015-4-21 13:39:30

回复 12# ap112

要用公式处理Excel里的数据,用VBA编程也可以,但GUI和对多个Excel的处理上不是那么顺手
所以想把Excel里的数据复制出来,用AU3就方便多了,可碰到错误公式,脚本就罢工了
论坛里下载不到3.2.12.0这个版本了,把你的打包发给我吧,406841895@qq.com 谢谢啦

xyold1 发表于 2015-4-22 04:47:39

下载了3.2.13.10 这个版本,可以运行,但对上千行Excel的处理能力就不如新版了,可能是新版本更新数组的原因吧

kevinch 发表于 2015-4-22 19:03:21

本帖最后由 kevinch 于 2015-4-22 19:05 编辑

久也不用03版的excel,无法模拟出错误也就没办法处理
不过你可以试一下下面的方式会不会卡死
Local $aArray = $oExcel.ActiveSheet.Cells($iStartRow, $iStartColumn).resize($iLastRow-$iStartRow+1, $iLastColumn-$iStartColumn+1).Value
如果正常的话,当单元格数量大于1个的时候你会得到一个二维数组,不过行列与excel里是相反的
页: [1] 2
查看完整版本: _ExcelReadSheetToArray读取含有#REF的excel表格出错的问题