Макрос для оптимизации высоты строк и в ячейках не скрытых. [Решено]

Автор Smol, 9 января 2020, 13:47

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

Smol

Уважаемые форумчане!

Прошу помощи:

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



Буду благодарен за любой ответ.


bigor

Слишком расплывчатая формулировка. Напишите конкретно что куда переносить и где оптимизировать :) Желательно с примером
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

Smol

Формулировка такая:
Лист на котором скрываются некоторые строки и столбцы.
Макрос должен проводить оптимизацию строк и перенос текста в ячейках только в видимых ячейках (строках).

Smol


bigor

Еще непонятнее стало :) Что значит перенос текста? В свойствах ячейки поставить галочку переносить по словам? И текст всегда в объединенных ячейках?
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

Smol

Текст в объедененых ячейках .
Текст формируется формулами для печати и может быть большим. Макрос отдаёт его на печать. Нужен макрос который бы проверял скрыты строки или нет и если нет то оптимизировал высоту и переносил текст в этих строчках.

economist

Автоподбор высоты строк с переносами - сложная задача, которую я в Excel с его даже более продвинутыми макросами решить так и не смог. Переделал документ (это был договор) в формате ODT - и теперь он выглядит безупречно и красиво. В "голом" Calc - так красиво сделать не получится. Жесткие переносы строк и их разная высота - по-любому будут выглядеть "таблично". Но можно макросом или без макросов, через Base (источник данных ODB-ODS) - брать их Calc текст, а рендерить его - уже во Writer. Это если нужно красиво. 
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

Smol

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

bigor

Как то так. Но неоптимально, тормозить будет на больших диапазонах
Sub OptimalCell

Sheet3=ThisComponent.Sheets.getByName("Лист1")
a = 3 '-начальная строчка для оптимизации
b = 65 '-конечная строчка для оптимизации
For t = a to b
if Sheet3.getCellRangeByPosition(0, t, 1, t).getRows().IsVisible then
Sheet3.getCellRangeByPosition(0, t, 1, t).IsTextWrapped = True' - перенос текста
Sheet3.Rows(t).OptimalHeight = True '-оптимальная высота '-оптимальная высота
end if

Next t

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

Smol

Уважаемый Bigor,
Спасибо  работает.
Большого диапазона у меня не будет. Макс 25 строк 5 штук скрытые будут 4  в зависимости от того какой шаблон отдавать на печать.