Показать сообщение отдельно
Старый 18.04.2013, 17:44   #23  
virhundo is offline
virhundo
Участник
 
33 / 16 (1) ++
Регистрация: 29.03.2007
ну даже не знаю... может ещё вариант:
X++:
 //красивость: убираем висячие строки
document.LastUsedWorksheetRow(1,true); // переход к последней строке - доступ к последнему  разрыву
        pageBreakCount           = document.getHPageBreakCount(1);
        if(pageBreakCount)
        {
            lastPageBreakLocationRow = document.getHPageBreak(pageBreakCount,1);
            //если разрыв появился после вывода последней строки с данными
            if(lastPageBreakLocationRow>=(StartLineRow+rowCount-1))
               document.insertPageBreakBeforeRow(StartLineRow+rowCount-1);
        }
X++:
public int LastUsedWorksheetRow(int _workSheet=1, boolean selectLastusedRow =false)
{
     COM comRange,
        comWorkSheet;
    COM comApplication;
    COM temp;
    if (m_comDocument)
    {
        comWorkSheet   = this.getWorkSheet(_workSheet);
        temp = comWorkSheet.Cells();
        temp = temp.SpecialCells(11); // 11 = xlCellTypeLastCell
        if(selectLastusedRow) //чтобы перейти на последнюю строчку
           temp.select();
        return temp.Row();
    }
    else return 0;
}
X++:
//доступ есть только тем разрывам, которые "видны" в рабочей области экрана
int getHPageBreak(int _numOfPageBreak, int _workSheet = 1)
{
    COM    comWorkSheet, comHPageBreaks, comHPageBreak;
    COM    pageBreakRange;
    int    totalPageBreakCount;
    COMVariant      comRowVariant, varRet;
    ComDispFunction funcGet;
    ;
    comWorkSheet = this.getWorkSheet(_workSheet);
    comHPageBreaks = comWorkSheet.hPageBreaks();
    totalPageBreakCount = comHPageBreaks.count();
    if (_numOfPageBreak <= totalPageBreakCount)
    {
        comHPageBreak  = comHPageBreaks.item(_numOfPageBreak);
        pageBreakRange = comHPageBreak.location();
        return pageBreakRange.row();
    }
    return 0;
}

Последний раз редактировалось virhundo; 18.04.2013 в 17:47.