Dreadfulangel
Знающий
- Сообщения
- 19
- Репутация
- 11
Ошибка в функции _ExcelReadSheetToArray из Excel.au3.
В документации написано:
Remarks: If the sheet is empty [0][0] and [0][1] both = 0.
На самом деле возвращает две 1, в чём можно убедиться на примере:
В UDF нашёл ошибку:
$sLastCell не может уже быть равной "R1C1" после StringRegExp, т.к. это уже массив, следовательно весь If не работает.
В документации написано:
Remarks: If the sheet is empty [0][0] and [0][1] both = 0.
На самом деле возвращает две 1, в чём можно убедиться на примере:
Код:
#include <Array.au3>
#include <Excel.au3>
$oExcel = ObjCreate("Excel.Application")
If Not IsObj($oExcel) Then
MsgBox(16, "Error: _Exel_Paste", "Couldn't Create Object Excel.Application")
EndIf
$oExcel = $oExcel.WorkBooks.Add
$oExcel.Application.Visible = True
For $xlWindow In $oExcel.Windows
$xlWindow.Visible = True
Next
$oExcel.Activate
$aLastCell=_ExcelReadSheetToArray($oExcel)
_ArrayDisplay($aLastCell, 'Excel')
$oExcel.Saved = True
$oExcel.Close
В UDF нашёл ошибку:
Код:
; Extract integer last row and col
$sLastCell = StringRegExp($sLastCell, "\A[^0-9]*(\d+)[^0-9]*(\d+)\Z", 3)
Local $iLastRow = $sLastCell[0]
Local $iLastColumn = $sLastCell[1]
; Return 0's if the sheet is blank
If $sLastCell = "R1C1" And $oExcel.Activesheet.Cells($iLastRow, $iLastColumn).Value = "" Then Return $avRET
$sLastCell не может уже быть равной "R1C1" после StringRegExp, т.к. это уже массив, следовательно весь If не работает.