Показать сообщение отдельно
Старый 04.06.2007, 20:10   #6  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Вот тот же размножитель на X++:
X++:
static void Create31days(Args _args)
{

    COM xlApp, wbks, wbk, wkss, currSheet, names;
    int iDay;
    COMVariant dummy    = new COMVariant();

    xlApp = new COM('Excel.Application');
    xlApp.Visible(true);

    wbks = xlApp.Workbooks();
    wbk = wbks.Add();

    wkss = wbk.Worksheets();
    currSheet = wkss.Item(1);
    currSheet.Select();
    currSheet.Name('DayTemplate');

    names = wbk.Names();
    names.Add( 'DayTemplate!MyRangeA1', '=DayTemplate!$A$1' ); // также для примера создадим локальный именованный диапазон

    dummy.noValue();

    for (iDay=1; iDay<= 31; iDay++)
    {
        currSheet.Copy( dummy, currSheet ); // вот создание копии текущего листа после текущего листа
        currSheet = xlApp.ActiveSheet();
        currSheet.Name(strfmt('Day%1',iDay));
    }
}
В классе ComExcelDocument_RU есть метод insertSheet. Он включает и копирование тоже.
За это сообщение автора поблагодарили: Arahnid (1), Андрей К. (1).