Объединить два макроса

Автор dziglo, 2 июня 2023, 08:44

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

gabix

Цитата: dziglo от  9 июня 2023, 14:40Python, но я не встречал такие макросы.

Вот пример:

https://sourceforge.net/projects/fbtools/files/lopyfb2tools/

Работоспособно ли оно, точно не знаю.

dziglo

Цитата: economist от  9 июня 2023, 11:01selString = ThisComponent.CurrentController.getViewCursor().getString()

Эту строчку надо вписать вместо этой?
ThisComponent.replaceAll(oReplace)

Тогда не происходит замен. Ни когда выделена часть текста, ни когда выделений текста нет.

economist

Цитата: dziglo от 13 июня 2023, 19:56Тогда не происходит замен. Ни когда выделена часть текста, ни когда выделений текста нет.

Целиком рабочий пример лучше поискать в Гугл, их много, разной степени подробности и для разных ситуаций. Выделений текста м.б. несколько, текст м.б. внутри таблицы, врезки, линкованного раздела, выделение м.б. вертикальным (блочным) итд. Главное что я хотел донести: OpenOffice|LibreOffice использует абстракцию MVC (Model-View-Controller), которая совсем не похожа на объектную модель Word/Excel в VBA, где у каждого объекта скорее всего есть свойства Text, Value, Label, Caption итд, вызываемые через точку. В LO они тоже есть, но точек будет несколько и иногда будет несколько строк, потому что не все методы/свойства доступны через точку (где-то придется вызывать функции, передавая в скобках объекты как аргумент для нее). 

Если беретесь разрабатывать продукт в OpenOffice|LibreOffice - придется эту особенность принять и научится самому переходить от M к V или С и обратно, потому что в одном случае нужное вам будет в контроллере, другой раз - в модели или view.

Лучший способ кодить - кодить и искать информацию самостоятельно, упомнить ее нереально. В дни когда нет интернета - кодить в OpenOffice|LibreOffice бесполезно (частично спасают книги Питоньяка). Ситуация с объектами в LO бывает настолько сложная, что в коде приходится перебирать все элементы коллекции объектов (нельзя обратиться напрямую по имени, ID или по индексу). Да, вот так все запущено немцами. Но любой нужный результат все-таки достижим.

Если посмотреть на большие специфические проекты с макросами по обработке текста (Writer) - часто можно увидеть Python в кач-ве основного языка макросов. Он прячет некоторую часть API-дичи и кмк будет чуть легче в освоении. НО примеров и документации там еще меньше.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

bigor

ЦитироватьА как можно подправить, чтобы поиск и замена происходили в выделенной части текста, если часть выделена, и во всем тексте документа, если выделений в тексте нет?
посмотрите интересную  тему по этому вопросу. Вам остается дописать проверку, есть выделенный диапазон или нет, и в зависимости от этого подставлять значение флага поиска
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут