Как в delphi скопировать диапазон из одной книги Excel в другую, динамически созданную?

Рейтинг: 0Ответов: 1Опубликовано: 20.04.2015

Добрый день! Кто может подсказать как решить следующую задачку? Открываю Excel книгу в функции Delphi. в этой же функции От другого экземпляра Excel создаю новую книгу через Excel.Workbooks.Add;

Кто может подсказать как выбрать диапазон строк из открытой книги и вставить его в созданную с помощью Workbooks.Add?

Ответы

▲ 1Принят

Смысл заключается в работе с объектом Excel, как если бы кнопки нажимал пользователь:

var ap : Variant;
begin
  ap := CreateOleObject('Excel.Application');
  ap.Workbooks.Open('c:\file.xlsx');//открыли файл
  ap.Range[
    ap.ActiveSheet.Cells[r1, c1], 
    ap.ActiveSheet.Cells[r2, c2]].Select;//выделили область
  ap.Selection.copy;//скопировали в буфер
  ap.Workbooks.Add;//создали новую книгу
  ap.ActiveSheet.Paste;//во вновь созданную книгу в активную страницу вставили содержимое буфера обмена
  // ... не забыть записать файл, закрыть Excel
end;

Чтобы облегчить разработку, вы можете воспользоваться записью макроса в Excel'е и посмотреть потом на сгенерированный код в VBA. Например, код выше на basic'е выглядит примерно так:

Workbooks.Open Filename:="D:\test.xlsx"
Range("F9:H11").Select
Selection.Copy
Workbooks.Add
ActiveSheet.Paste