[已解决]什么都不变的情况下。为什么ExcelReadArray有时正常读取有时不正常?
本帖最后由 cnergao 于 2013-2-17 12:31 编辑#include <Excel.au3>
#include <Array.au3>
Dim $array = ["中国", "美国", "日本", "英国", "德国", "意大利", "法国", "韩国", "俄罗斯", "印度"]
Local $I, $Y, $array, $aArray1
$sFilePath1 = "D:\AUTOIT_3.3.7.15.1\Test2.xls" ;该文件应该已存在
$oExcel = _ExcelBookOpen($sFilePath1)
$I = $oExcel.ActiveSheet.Range("A65535").End(-4162).Row
$aArray1 = _ExcelReadArray($oExcel, 1, 1, $I, 1, 0) ;从活动工作表的行或列创建一个数组垂直方向
If @error Then
MsgBox(0, "", @error, 2)
Else
$Y = 0
Do
If StringRegExp($aArray1[$Y], $array, 0) = 1 Then ;如果匹配写入分组号
_ExcelWriteCell($oExcel, 5, $Y + 1, 2)
ElseIf StringRegExp($aArray1[$Y], $array, 0) = 1 Then
_ExcelWriteCell($oExcel, 6, $Y + 1, 2)
ElseIf StringRegExp($aArray1[$Y], $array, 0) = 1 Then
_ExcelWriteCell($oExcel, 7, $Y + 1, 2)
ElseIf StringRegExp($aArray1[$Y], $array, 0) = 1 Then
_ExcelWriteCell($oExcel, 8, $Y + 1, 2)
ElseIf StringRegExp($aArray1[$Y], $array, 0) = 1 Then
_ExcelWriteCell($oExcel, 9, $Y + 1, 2)
ElseIf StringRegExp($aArray1[$Y], $array, 0) = 1 Then
_ExcelWriteCell($oExcel, 10, $Y + 1, 2)
ElseIf StringRegExp($aArray1[$Y], $array, 0) = 1 Then
_ExcelWriteCell($oExcel, 11, $Y + 1, 2)
ElseIf StringRegExp($aArray1[$Y], $array, 0) = 1 Then
_ExcelWriteCell($oExcel, 12, $Y + 1, 2)
ElseIf StringRegExp($aArray1[$Y], $array, 0) = 1 Then
_ExcelWriteCell($oExcel, 13, $Y + 1, 2)
ElseIf StringRegExp($aArray1[$Y], $array, 0) = 1 Then
_ExcelWriteCell($oExcel, 14, $Y + 1, 2)
Else
_ExcelWriteCell($oExcel, 1, $Y + 1, 2)
EndIf
$Y = $Y + 1
Until $Y = $I
EndIf
这个代码没有任何错误吧?
为什么运行的时候第一次正常。接下来就会出现
D:\AUTOIT_3.3.7.15.1\Include\Excel.au3 (738) : ==> ??????(?????).:
$aArray[$xx] = $oExcel.Activesheet.Cells(($xx - $iIndexBase) + $iStartRow, $iStartColumn).Value
$aArray[$xx] = $oExcel.Activesheet.Cells(($xx - $iIndexBase) + $iStartRow, $iStartColumn)^ ERROR
这样的错误
test2.xls内容如下
简介
语言:<strong>中国<br /></strong>
语言:<strong>美国<br /></strong>
语言:<strong>日本<br /></strong>
语言:<strong>俄罗斯<br /></strong>
语言:<strong>英国<br /></strong>
语言:<strong>德国<br /></strong>
语言:<strong>法国<br /></strong>
语言:<strong>意大利<br /></strong>
语言:<strong>韩国<br /></strong>
语言:<strong>朝鲜<br /></strong>
语言:<strong>印度<br /></strong>
语言:<strong>南非<br /></strong>
实际操作数据有上万条左右。
试了很多次不知道是不是数组定义的问题。有时正常有出错。
然后换了一种思路已经搞定。希望对大家有帮助。答案在三楼 有没有人碰到过类似的问题? #include <Excel.au3>
#include <Array.au3>
Local $I, $Y, $result, $aArray2,$aArray1
$sFilePath1 = "D:\AUTOIT_3.3.7.15.1\test3.xls" ;该文件应该已存在
$oExcel = _ExcelBookOpen($sFilePath1)
$I = $oExcel.ActiveSheet.Range("A65535").End(-4162).Row;获取数据总行数
For $Y=1 To $I
$aArray1=$oExcel.cells($Y,1).Value;获取A列第N行数据
$aArray2=$oExcel.cells($Y,2).Value;获取B列第N行数据
$result=StringRegExpReplace($aArray2, '<(?i)strong>(.*?)<(?i)b', '<strong>'&$aArray1&'<b');用A列数据替换B列指定字符串
$oExcel.cells($Y,2).Value=$result;把替换后的结果写入B列
Next
页:
[1]