Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

22 Октябрь 2019, 22:00 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Часто задаваемые вопросы по LibreOffice и Apache OpenOffice.org
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Существует ли простой способ узнать количество страниц?  (Прочитано 2644 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Rafik
Форумчанин
***
Offline Offline

Сообщений: 95


« Ответ #35193: 7 Апрель 2016, 07:27 »

rami, в версии 4.2.2 показывает умопомрачительное количество страниц = 1805688, хотя в диапазоне печати всего лишь 2 страницы. Я начал писать свой макрос ласипед именно с такой краткой процедуры.

За формулу пересчета на листы огромное спасибо. Цепочку "если" можно будет заменить формулой. Вот что получилось в итоге
Код:
Function Pages1(Optional oDoc As object) As Long
' Считает количество страниц в активном листе.
If isMissing(oDoc) Then
oDoc = ThisComponent
End if
oSheet = oDoc.CurrentController.getActiveSheet()
' Получаем расположение разрывов страницы по колонкам и строкам
oColPgBr = oSheet.getColumnPageBreaks()
oRowPgBr = oSheet.getRowPageBreaks()
' Адрес последней ячейки
oEndAdr = GetEndAdr(oSheet)
'--- Сколько каких разрывов страниц попадает в диапазон (0,0,последн_колонка,последн_строка)
nVert = 0 ' Вертикальные
nHor = 0 ' Горизонтальные
' Сколько вертикальных вписывается ВНУТРЬ диапазона
Do While oColPgBr(nVert).Position - 1 < oEndAdr(0)
nVert = nVert + 1
Loop
' Сколько горизонтальных вписывается ВНУТРЬ диапазона
Do While oRowPgBr(nHor).Position - 1 < oEndAdr(1)
nHor = nHor + 1
Loop  
'--- Подсчитали, теперь высчитаем количество страниц и вернем его
Pages1 = (nHor+1)*(nVert + 1)
End Function

В моем ласипеде есть неточность. Если конец документа <> концу диапазона печати, будет неправильное количество страниц. Поэтому надо будет в GetEndAdr определять координаты последней ячейки для PrintArea, а не для листа.
« Последнее редактирование: 7 Апрель 2016, 07:38 от Rafik » Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!