Как стать автором
Обновить

Комментарии 18

Как я понимаю, на предпоследней странице получится что несколько последних строк больше по высоте? Как вариант можно просто HPageBreaks вставить свой где надо. Тогда высоты будут одинаковые, но предпоследний лист будет чуть-чуть не весь заполнен на бумаге.

Да, на последней странице несколько последних строк будут больше по высоте

Проще чуть уменьшить масштаб листа чтобы подписи влезли на полный лист.

Делюсь лайк-хаком: пишите письмо на одной странице с основными параметрами, пишите детали как в приложении 1.

Руководитель подписывает письмо а сама смета -по барабану.

Если надо очень официально-то все равно каждая страница внизу подписывается

Хороший совет, но в конце каждой сметы всё равно подписи ставят - там форма такая

Форму поменяйте. На многих документах подпись стоит на первом листе с пометкой «утверждаю».

Итог важен, а иначе в середину можно понапихать разного.

Форма определена НПА, это не просто смета к КП. Да, на первом (титульном) листе подписи и печати выглядят солидно, но тут смысл в итоговых цифрах, поэтому вполне логично именно такое расположение подписи.

Есть ещё лайфх: посылаем по email и без подписи.

Весь загнивающий запад так работает. Подпись только под договором, детали по e-mail.

For Each ws In wb.Worksheets

ActiveWindow.View = xlPageBreakPreview

Перебор листов в книге не делает лист активным. Зачем в цикле каждый раз выполняется ActiveWindow.View = xlPageBreakPreview?
Лучше написать ws.DisplayPageBreaks = True - это заставит эксель пересчитать разделение на страницы на каждом листе.

Вообще, если директору так надо видеть сумму перед подписью, то я в таких случаях просто ставлю HPageBreaks над строкой с суммой и не надо строчки раздвигать.

Вообще, если директору так надо видеть сумму перед подписью, то я в таких случаях просто ставлю HPageBreaks над строкой с суммой и не надо строчки раздвигать.

Попался на глаза этот код, вдруг кому полезно будет:

With myWorkbook
    ActiveWindow.View = xlPageBreakPreview
    If .ActiveSheet.HPageBreaks.Count > 0 Then
        Set rPodpis = .ActiveSheet.Cells.Find("Итого:", LookIn:=xlValues, LookAt:=xlWhole)
        If Not rPodpis Is Nothing Then
            bSplit = False
            For Each myHPageBreak In ActiveSheet.HPageBreaks
                If myHPageBreak.Location.Row > rPodpis.Row Then
                    bSplit = True
                    Exit For
                End If
            Next
            If bSplit Then .ActiveSheet.HPageBreaks.Add rPodpis
        End If
    End If
    ActiveWindow.View = xlNormalView
End With

* В моем случае в книге был заведомо один лист, поэтому обращаюсь к ActiveSheet

Обоже, я думал в Германии бюрократия, ан нет, в России)) в Германии достаточно отправить на электронку ангебот (ценовое предложение, в котором будет перечень услуг и цен за квадратный метр, а так же общее количество метров). И всё. Даже подпись не нужна ни с чьей стороны. Это и является официальным договором по ценам для объекта в контексте которого идёт переписка.

Есть конечно так называемый Verhandlungstermin на котором самой сутью встречи является не наличие подписи, а переговоры с целью понизить некоторые позиции. Таким образом цены координируются сторонами и уже в этой версии документа необходимы подписи обоих участников.

Но как можно подписывать смету не видя при этом всего перечня? Это звучит как какая-то формальность. Если ты подписываешь видя только итоговую сумму, то это чисто формальная подпись, в таком случае можно и не видя сумму подписать.

Идиоты))

«Безумие и отвага»

Сами себе проблемы создаём, потом их героически преодолеваем.

Все таки не ясно о какого уровня руководителе идёт речь. Если директор- то по идее он не должен подписывать сметы только договоры с приложениями.

Если начальник уровня отдела, то надо бы директору настучать ему по голове, чтобы на ровном месте проблему не создавали.

Речь про сметы в составе проектно-сметной документации на строительство.

Образец рекомендуемый, но в целом все придерживаются
Образец рекомендуемый, но в целом все придерживаются

Подпись можно и "электронно" поставить, но тут даже по оформлению будет выглядеть некрасиво, если подпись будет в отрыве от остального содержимого.

Если ты подписываешь видя только итоговую сумму, то это чисто формальная подпись, в таком случае можно и не видя сумму подписать.

Смысл в том, что подписывается один лист. Остальные листы ретивые исполнители могут заменить. Если на листе с подписями будет итоговая сумма, то хотя бы она останется неизменной.

В целом предложенное решение автором - костыль, так как проблема не в технической плоскости, а в административной. Если уж ты при подписании не доверяешь, то подписывай каждую страницу или требуй, чтобы сшивали документ.

Ооо, у меня была такая проблема в Crystal Reports в 2007 году для банковского отчёта. Нормального решения в CR не было, и я как-то извратился. Не помню уже как. Вроде я вставлял принудительный page break при некоторых условиях, чтобы часть строк и Итого попадали на новую страницу. Форму поменять было нельзя, потому как она была утверждена ЦБ.

Я знаю, как случайно поломать скрипт. На любой строке ниже "визульно" последней (383 на примере) в ячейку ввести пробел. Например, где-то на четырехсотой.

Если люди, создающие сметы, не способны сразу сделать нормальную разметку, то от них вполне можно ожидать подобных сюрпризов.

Наверное, в скрипт надо ввести проверку, что выявленная последняя строка содержит значимую информацию. Можно сцепить значения ячеек, удалить пробелы и проверить длину того, что останется. Ну и определить порог. Если длина больше, то продолжаем. Меньше-ошибку в лог и к следующему файлу.

Кстати, при массовой обработке лучше не использовать msgbox, а писать лог или в консоль, или в текстовик. Нельзя отойти от компьютера, постоянно требуется нажатие кнопки. А уже в конце полноценное уведомление, типа, Успешно обработано Х файлов, ошибок Y. Детали в логе.

Если люди, создающие сметы, не способны сразу сделать нормальную разметку, то от них вполне можно ожидать подобных сюрпризов.

Это не люди:

Сметы создаются в приложении ГРАНД-Смета, версия 2024.2 - это указывается в колонтитуле Эксель файла и, возможно, у этого приложения есть такая кнопка, чтобы сделать всё красиво и не делать так, чтобы на последнем листе оставались только подписи.

Но организация, которая составляет эти сметы, и передаёт их на печать к нам в другую организацию, похоже с этой кнопкой не знакома.

Не будет там пробела в 400й строке.

Про msgbox и логи согласен.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории