При попытке найти последнюю ячейку во втором или другом листе экселя отличном от первого выдаётся ошибка. Сам код вот:| Код | ... Excel := CreateOleObject('Excel.Application'); Excel.Visible := false; Excel.Workbooks.Open(OpenDialog1.FileName); Sheet := Excel.Workbooks[1].WorkSheets[2]; // Чтобы знать размер листа (WorkSheet), т.е. количество строк и количество // столбцов, мы активируем его последнюю непустую ячейку Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate; x := Excel.ActiveCell.Row; y := Excel.ActiveCell.Column; StringGrid1.ColCount := y; StringGrid1.RowCount := x; RangeMatrix := Excel.Range['A1', Excel.Cells.Item[X, Y]].Value; Excel.Quit;
k := 1; Gauge1.Progress := 0; repeat for r := 1 to y do StringGrid1.Cells[(r - 1), (k - 1)] := RangeMatrix[K, R]; Gauge1.Progress := Gauge1.Progress + 1; Inc(k, 1); StringGrid1.RowCount := k + 1; until k > x; RangeMatrix := Unassigned; ...
|
Сама ошибка возникает в этой строке:| Код | ... Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate; ...
|
Но возникает, если именно в этой строке выбирается второй или листы отличные от первого:| Код | Sheet := Excel.Workbooks[1].WorkSheets[2];
|
А если написать так:| Код | Sheet := Excel.Workbooks[1].WorkSheets[1];
|
то содержимое первого листа выводится без проблем.
Подскажите пожалуйста, как правильно выбрать второй и большие листы???? |