Автоматизация Excel. Как скопировать более одной ячейки? - PullRequest
0 голосов
/ 21 февраля 2009

Например:

 //omitted

vector<_bstr_t> cellData;

Excel::_WorksheetPtr pSheet = application->ActiveSheet;

Excel::RangePtr pRange = application->Cells;

_bstr_t cellValue = pRange->Item[1][1]; //single cell

cellData.push_back(cellValue);

 //omitted

Без:

  • MFC
  • АТЛ

Вопрос:

  • Как скопировать несколько ячеек, например A1: B1, в вектор?
  • Есть ли более соответствующий метод вместо Item ?

1 Ответ

1 голос
/ 22 февраля 2009

Я никогда не делал никакой автоматизации Excel с использованием C ++, но если он работает аналогично макросам VBA, класс WorkSheet должен иметь свойство Range, которое возвращает диапазон ячеек на листе. Вы можете указать желаемый диапазон, указав идентификатор двух ячеек или строку, представляющую диапазон.

Код в псевдо VBA:

Dim range As Range
Set range = ActiveSheet.Range("B12:D34")
Set range = ActiveSheet.Range("B12", "D34")
Set range = ActiveSheet.Range("B12", ActivSheet.Range("D34"))
...

См. MSDN для получения дополнительной информации о классе Range.

...