Страницы: 1
RSS
Подсчет количества страниц при печати листа, Количество страниц не обновляется при изменении разметки страницы
 
Всем чмоки в этом чатике :D
Для экономии бумаги программно меняю ориентацию с альбомной на портретную и обратно. В портретной выходит 1 страница на печать, в альбомной - 2.
Желательно печатать в альбомной, если одна страница, если их две - портрет.
Код
Sub pbreaks()
    Dim sh As Worksheet
    Set sh = Workbooks.Open("D:\АктСверки № 336 от 31-03-2022.xls", False, False).ActiveSheet

    yyy = sh.VPageBreaks.Count
    zzz = sh.HPageBreaks.Count
    xxx = sh.PageSetup.Pages.Count
    uuu = countp(sh.Name)
    With sh.PageSetup
        .Orientation = xlLandscape
        .FitToPagesWide = 1
    End With
    yyy = sh.VPageBreaks.Count
    zzz = sh.HPageBreaks.Count
    xxx = sh.PageSetup.Pages.Count
    uuu = countp(sh.Name)
    sh.Parent.Close False
End Sub

Public Function countp(Tabx As String) As Long
    countp = ExecuteExcel4Macro("Get.Document(50,""" & Tabx & """)")
End Function


Ни одна из величин xxx, yyy, zzz, uuu не меняется после поворота в xlLandscape. Если сделать превью печати или Файл - Печать, то величины обновляются.
Application.PrintCommunication = False/True пробовал, принудительный пересчет Application.Calculate пробовал.
Подскажите, куда копать?
Изменено: Лузер™ - 26.04.2022 17:00:57
Bite my shiny metal ass!      
 
Попробовал: после xlLandscape нужная переменная yyy меняется. Думаю, дело в самом файле, без примера сложно гадать.

Как вариант, можно попробовать ещё так: после xlLandscape вставить
Код
Dim q
Application.ScreenUpdating = True
q = Selection.Address
Cells(Selection.Row * 10, Selection.Column * 10).Select
Range(q).Select
Идея простая: "передёрнуть" страницу вниз-вверх. Почему-то PageBreaks без этого иногда считается коряво.
 
Цитата
tolikt написал:
Думаю, дело в самом файле, без примера сложно гадать.
Добавил пример.
За селекты спасибо, попробую
Bite my shiny metal ass!      
 
пример не загружается. ЧЯДНТ?
Изменено: Лузер™ - 26.04.2022 17:00:20
Bite my shiny metal ass!      
 
Лузер™, Не создавайте новое сообщение для добавления файла, добавьте в первое сообщение, временные трудности на сайте, в новое сообщение не добавляется, только в существующее
 
Msi2102, Спасибо, добавил в первое. Но и zip тоже пролез 8)
Bite my shiny metal ass!      
 
Добавьте поcле открытия

Код
sh.DisplayPageBreaks = True
Владимир
 
После конца очередного квартала с появлением новых актов сверки вернулся к этой задаче.
sokol92, Спасибо! Помогло.
Кто бы мог подумать, что отображение разрывов (хотя они и так были видны в оригинальном файле) может влиять на подсчет страниц. 8-0
Bite my shiny metal ass!      
 
Цитата
написал:
Кто бы мог подумать, что отображение разрывов
древняя история. Отображение разрывов заставляет VBA пересчитать кол-во печатных страниц. Если не выставлять разрывы - кол-во печатных страниц может быть не пересчитано до тех пор, пока не завершится код.
Изменено: Дмитрий(The_Prist) Щербаков - 21.07.2022 15:32:39
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Страницы: 1
Наверх