 |
Копирование данных
Перемещение данных между листами
var
ISheetSrc, ISheetDst: Excel8_TLB._Worksheet;
IRangeSrc, IRangeDst: Excel8_TLB.Range;
...
try
ISheetSrc := IWorkbook.Worksheets.Item['Лист1'] as Excel8TLB._Worksheet;
ISheetDst := IWorkbook.Worksheets.Add(EmptyParam, ISheetSrc, 1, EmptyParam, xlLCID) as _Worksheet;
IRangeSrc := ISheetSrc.UsedRange[xlLCID];
IRangeDst := ISheetDst.Cells.Item[1, 1];
IRangeSrc.Copy(IRangeDst);
finally
IRangeDst := nil;
IRangeSrc := nil;
ISheetDst := nil;
ISheetSrc := nil;
end;
Метод Copy интерфейса Range принимает в качестве параметра любой другой Range,
совпадение размеров источника и получателя необязательно.
Примечание:
При копировании области убедитесь, что не редактируете ячейку, иначе возникнет
исключение "Call was rejected by callee".
Через clipboard
Использование метода Copy без указания параметра destination скопирует ячейки в буфер обмена Windows:
var
ISheetSrc, ISheetDst: Excel8_TLB._Worksheet;
IRangeSrc, IRangeDst: Excel8_TLB.Range;
...
try
ISheetSrc := IWorkbook.Worksheets.Item['Лист1'] as Excel8TLB._Worksheet;
ISheetDst := IWorkbook.Worksheets.Add(EmptyParam, ISheetSrc, 1, EmptyParam, xlLCID) as _Worksheet;
IRangeSrc := ISheetSrc.UsedRange[xlLCID];
IRangeDst := ISheetDst.Cells.Item[1, 1];
IRangeSrc.Copy(EmptyParam); // так кладем в Clipboard
ISheetDst.Paste(IRangeDst, EmptyParam, xlLCID); // а вот так достаем оттуда
finally
IRangeDst := nil;
IRangeSrc := nil;
ISheetDst := nil;
ISheetSrc := nil;
end;
|
 |