как подсчитать количество страниц в документе ?

Автор Михаил53, 7 ноября 2022, 19:29

0 Пользователи и 1 гость просматривают эту тему.

Михаил53

Подскажите как можно подсчитать через макрос кол-во страниц в OpenOffice ?

bigor

Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

sokol92

Если для документа Calc, то можно так (для всего документа, листа, диапазона ячеек):
Sub Test
  Dim n As Long
  n=ThisComponent.getRendererCount(ThisComponent, Array()) ' число страниц для документа
  n=ThisComponent.getRendererCount(ThisComponent.Sheets(0), Array()) ' число страниц для первого листа документа
  n=ThisComponent.getRendererCount(ThisComponent.Sheets(0).getCellRangeByName("A1:D99"), Array()) ' число страниц для диапазона ячеек
End Sub
Владимир.

bigor

Для writer я так считаю
Sub Main
Print thiscomponent.currentcontroller.pagecount
End sub

Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

Михаил53

Цитата: sokol92 от  7 ноября 2022, 21:16Если для документа Calc, то можно так (для всего документа, листа, диапазона ячеек):
Sub Test
  Dim n As Long
  n=ThisComponent.getRendererCount(ThisComponent, Array()) ' число страниц для документа
  n=ThisComponent.getRendererCount(ThisComponent.Sheets(0), Array()) ' число страниц для первого листа документа
  n=ThisComponent.getRendererCount(ThisComponent.Sheets(0).getCellRangeByName("A1:D99"), Array()) ' число страниц для диапазона ячеек
End Sub

Это работает в OpenOffice Calc?

bigor

Цитата: Михаил53 от  9 ноября 2022, 14:57Это работает в OpenOffice Calc?
Проверьте. Не у всех он стоит. Нашел. Работает
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

Михаил53

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

bigor

Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

Михаил53

Цитата: bigor от 26 января 2023, 10:50А разве есть такое событие листа?

Я не знаю, просто нужно решение, что бы при подгонке страниц по масштабу автоматически пересчитывалось кол-во листов и выводилось.

mikekaganski

Создайте пользовательскую функцию, используя код из #2, и в ячейке, где она будет, используйте NOW() или другую волатильную функцию - примерно так:

=T(NOW()) & MY_FUNCTION()
или

=NOW() * 0 + MY_FUNCTION()
С уважением,
Михаил Каганский