Цитата:
Сообщение от
sashanka
Насчет вставки строк - я вроде так и делаю
У Вас много лишних "телодвижений"

Если очистить код от лишних действий, то должно быть примерно так
X++:
COM worksheets,
sheet,
rowTemplate,
newRows;
int curSheet;
int curRow,
numRows;
worksheets = GridExcel.Worksheets();
// Сразу создаем нужное количество листов по образцу первого листа
sheet = worksheets.Item(1);
sheet.copy( sheet );
for (curSheet = 1; curSheet <= 2; curSheet++)
{
//выделем нужную строчку на шаблоне
sheet = worksheets.Item(curSheet);
curRow = 9;
//подсчитываем кол-во необходимых для вставки строк
select count(recid) from table1;
numRows = table1.RecId;
if (!numRows)
{
warning('Нет данных для вставки на листе ' + int2str(curSheet));
continue;
}
//вставляем строки
newRows = sheet.Range(strfmt("%1:%2", curRow + 1,NumRows + curRow) ); //вставляем после выделенной строки
newRows.Insert();
//копируем нужный формат
rowTemplate = sheet.Range(strfmt("%1:%2", curRow, curRow) ); //откуда будем копировать форматирование
rowTemplate.copy( newRows );
} // for (curSheet = 1; curSheet <= 2; curSheet++)
PS: Для справки
OWC SpreadSheet имеет предел в 32766 операций. Не важно каких. Например, не в состоянии вставить большее количество строк. У Вас какое значение numRows получается для второго листа?