Страницы: 1
RSS
Как найти границу страницы., Необходимо для правильного формирования докуметов в печать.
 
Доброго всем здравия и удачи!
Что-то не получается создать нормальное описание задачи, вкратце суть такова: печатаю счет-фактуру. В зависимости от кол-ва позиций либо оставить как есть- т.е. разместить не более, чем на 1 стр., либо вставить разрыв, что "подвал" страницы не разрывался. На первой странице примера - что получается. В принципе это нужно разместить на одной странице. Но, если добавится еще одна запись - то должно получиться, как на второй странице, т.е. нужно  вставить разрыв, что бы на последнем листе при печати бала как минимум одна строчка записи.
Синяя строка - сквозная, а вот желтое должно быть на одной странице в любом случае.

Вопрос в том, как мне найти, куда попадает граница печати в "Обычных" условиях" - т.е. нужно ли немного уменьшить страницу, либо вставить разрыв (и куда?), либо оставить как есть...
...надеюсь, суть моей проблемы понятна, надеюсь на помощь.
 
http://programmersforum.ru/showpost.php?p=387443&postcount=5
http://programmersforum.ru/showthread.php?t=23104

Поиск по ключевому слову hpagebreak
 
Михаил, приложил вариант с кодом, который выполняет при необходимости коррекцию начала 2-й страницы.
Код запускается автоматически при попытке распечатки документа, но можно запускать и вручную.
В конце макроса устанавливается вид документа "Обычный", чтобы исключить заторможенность вида "Разметка страницы". Чтобы оставить вид разметки, нужно закомментировать строку:
ActiveWindow.View = xlNormalView
Изменено: ZVI - 05.10.2013 02:58:03
 
ZVI - спасибо, вы мне практически решили задачу.
EducatedFool - тоже спасибо, ссылки интересные, буду разбираться и там.
 
Владимир. еще раз спасибо! чуть изменил ваш макрос вот в этой части, теперь разбивает последнюю страницу независимо от кол-ва страниц. Правда, в моем случае вряд ли будет более двух, но все же...
 
Код
 With ActiveSheet
    .ResetAllPageBreaks
      Pb = .HPageBreaks.Count
    i = .HPageBreaks(Pb).Location.Row
    If i <= [ПоследняяСтрока].Row - 1 Then
      If i > [ВсегоКОплате].Row Then
        Set .HPageBreaks(1).Location = [ВсегоКОплате].Offset(-1).Cells(1)
      End If
    End If
  End With
 
Михаил, рад был помочь.
Ваш вариант учета последней страницы более универсален, даже если не ожидается более 2-х страниц.
Страницы: 1
Читают тему
Наверх