Нашёл у себя в джобах пример. Когда-то баловался. Однако, работает...
X++:
static void PasteSpecial_DemoJob(Args _args)
{
TextBuffer txtb = new TextBuffer();
EmplTable emplTable;
int row;
COM xlApp; // Excel.Application
COM wbks, wbk; // Workbooks, Workbook
COM wkss, wks; // Worksheets, Worksheet
COM rng, rngCR, cell; // все Range
;
xlApp = new COM('Excel.Application');
wbks = xlApp.Workbooks();
wbk = wbks.Add();
wkss = wbk.Worksheets();
wks = wkss.Item(1);
for (row = 1; row <= 5; row += 1) // выводит 5 копий таблицы emplTable
{
txtb.setText('');
while select emplTable order by Name
{
txtb.appendText(emplTable.Name ); txtb.appendText('\t');
txtb.appendText(emplTable.PhoneLocal ); txtb.appendText('\t');
txtb.appendText(emplTable.EmplId ); txtb.appendText('\t');
txtb.appendText(emplTable.CellularPhone); txtb.appendText('\t');
txtb.appendText(emplTable.UserId ); txtb.appendText('\t');
txtb.appendText('\r\n');
}
txtb.toClipboard();
rng = wks.Range('A'+int2str(row*1000)); // каждую копию списка начинаем с очередной 1000-й строки Excel
rng.PasteSpecial(1);
}
xlApp.Visible(true);
}