AndyD... Есть ощущение, что мы несколько перестарались с массивами...
Сейчас проверил - работает и обычный Range, без всяких FormulaArray...
Просто выстраиваем наш "массив массивов" из 10 строк и 2 столбцов в диапазоне A1:B10 и передаем его OpenText... о блин!
X++:
static void Test_OpenText_NoArray_3(Args _args)
{
COM xlApp;
COM rng;
COM wbks, wbk;
COM wkss, wks;
COM cells;
;
xlApp = new COM('Excel.Application');
xlApp.Visible(true);
wbks = xlApp.Workbooks();
wbk = wbks.Add();
wkss = wbk.Worksheets();
wks = wkss.Item(1);
cells = wks.Cells();
// первый СТОЛБЕЦ листа - номера полей A1:A10
COM::createFromVariant( cells.Item( 1, 1) ).Value2( 1);
COM::createFromVariant( cells.Item( 2, 1) ).Value2( 2);
COM::createFromVariant( cells.Item( 3, 1) ).Value2( 3);
COM::createFromVariant( cells.Item( 4, 1) ).Value2( 4);
COM::createFromVariant( cells.Item( 5, 1) ).Value2( 5);
COM::createFromVariant( cells.Item( 6, 1) ).Value2( 6);
COM::createFromVariant( cells.Item( 7, 1) ).Value2( 7);
COM::createFromVariant( cells.Item( 8, 1) ).Value2( 8);
COM::createFromVariant( cells.Item( 9, 1) ).Value2( 9);
COM::createFromVariant( cells.Item(10, 1) ).Value2( 10);
// второй СТОЛБЕЦ листа - типы полей B1:B10
COM::createFromVariant( cells.Item( 1, 2) ).Value2( 1);
COM::createFromVariant( cells.Item( 2, 2) ).Value2( 2);
COM::createFromVariant( cells.Item( 3, 2) ).Value2( 2);
COM::createFromVariant( cells.Item( 4, 2) ).Value2( 2);
COM::createFromVariant( cells.Item( 5, 2) ).Value2( 2);
COM::createFromVariant( cells.Item( 6, 2) ).Value2( 1);
COM::createFromVariant( cells.Item( 7, 2) ).Value2( 1);
COM::createFromVariant( cells.Item( 8, 2) ).Value2( 1);
COM::createFromVariant( cells.Item( 9, 2) ).Value2( 1);
COM::createFromVariant( cells.Item(10, 2) ).Value2( 2);
// !!!!!! обычный Range без всяких FormulaArray :)
rng = wks.Range('A1:B10');
wbks.OpenText
(
'C:\\demo.txt', //FileName
1251, // Origin,
1, // StartRow,
1, // DataType
1, // TextQualifier
false, // ConsecutiveDelimiter,
true, // Tab,
false, // Semicolon,
false, // Comma,
false, // Space,
false, // Other,
'', // OtherChar,
rng // FieldInfo
);
}