OLE Excel + BCB5 + VarArrayCreate
От: xUSERx Россия  
Дата: 09.04.07 05:08
Оценка:
Ув. обитатели данного ресурса подскажите пожалуйста в чем моя ошибка.

Пытаюсь записать в Range вариантный массив.

Variant  vVarApp,vVarBooks,vVarBook,vVarSheets,vVarSheet,vVarCell;
Variant v;
vVarApp=CreateOleObject("Excel.Application");
vVarBooks=vVarApp.OlePropertyGet("Workbooks");
vVarApp.OlePropertySet("SheetsInNewWorkbook",1);
vVarBooks.OleProcedure("Add");
vVarBook=vVarBooks.OlePropertyGet("Item",1);
vVarSheets=vVarBook.OlePropertyGet("Worksheets") ;
vVarSheet=vVarSheets.OlePropertyGet("Item",1);
vVarSheet.OlePropertySet("Name","bla bla");
vVarSheet=vVarSheets.OlePropertyGet("Item",1);
vVarApp.OlePropertySet("Visible",true);
vVarCell=vVarSheet.OlePropertyGet("Range","A1:A4");
vVarCell.OleProcedure("Select");
Variant arr = VarArrayCreate(OPENARRAY(int,(0,3)), varByte);
if(arr.IsArray())
 {
   arr.PutElement(1, 0);
   arr.PutElement(2, 1);
   arr.PutElement(3, 2); 
   arr.PutElement(4, 3); 

 vVarCell.OlePropertySet("Value", arr);
 }


Записывает весь Range первым элементом массива.

Подскажите выход?
Не все то код, что компилируеться. (с) Рефракторинг
Re: OLE Excel + BCB5 + VarArrayCreate
От: Аноним  
Дата: 10.04.07 10:14
Оценка:
Здравствуйте, xUSERx, Вы писали:

USE>Ув. обитатели данного ресурса подскажите пожалуйста в чем моя ошибка.


USE>Пытаюсь записать в Range вариантный массив.


Пример работающего кода, правда на Delphi.

Arr := VarArrayCreate([1, Rows, 1, Cols], varVariant);

// тут заполняем массив

ExcelWorksheet1.Range[ExcelWorksheet1.Cells.Item[1, 1], ExcelWorksheet1.Cells.Item[Rows, Cols]].Value2 := Arr;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.