Копирование макросов

Автор NewUser, 18 января 2024, 05:49

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

NewUser

Здравствуйте. Прошу не ругать за дилетантский вопрос. Признаюсь, что за годы использования LO я так ничего и не понял с макросами. Поэтому приходится много времени тратить на однотипные ручные операции. Спасибо экспертам этого форума, помогают по запросам, публикуя образцы документов (Writer, Calc) с нужными мне макросами. Скажите, а как мне копировать макросы из этих документов в свои, существуют ли они отдельно от текстовых или табличных документов? Иначе говоря, что нужно скопипастить, чтобы перенести макрос в документ, с которым работаю, и что нужно "Сохранить (как)", чтобы сохранить полезный макрос на будущее? Спасибо

economist

#1
Макросы лежат в Модулях. Модули StarBasic могут быть в 3-х местах по Alt+F11 (МоиМакросы, Макросы Приложения LibreOffice и в самом файле-документе ODT ODS ODP ODG). И еще макрос может лежать как файл *.bas на диске (экспортированный).

Все файлы-примеры  с Форума сохраняйте в одну папку, так проще воспользоваться результатами чужого труда, не ломается контекст, в котором все работает. Теперь о том как его взять.

Чтобы чужой макрос заработал у вас - его или его модуль нужно перетащить мышью в ваш файл или МоиМакросы или скопировать в Мои Макросы или в Макросы Приложения. Изучите эти места на диске, найдя их по именам модулей в папках share Scripts. В зависимости от способа и путей установки это м.б. разные места в Windows и Linux, иногда глубоко закопанные в C:\Users... C:\Пользователи или C:\Program Files... Длинные пути часто проблемные из-за службы UAC Windows, антивируса, пробелов и кириллицы в имени. Макросы в таких местах могут не заработать (нужна правка). Самое сложное когда один макрос основан на других макросах, т.н. комплектных "батарейках" OpenOffice|LibreOffice, лежащих в разных местах. Это всевозможные "большие" либы и модули Tools, ScriptForge, Access2Base,  FormWizard итп - коллекции макросов, сложившиеся за десятилетия. Они многое умеют и программисты используют готовый код чтобы не повторяться. К этому надо привыкнуть - со временем поймете как это здорово улучшает буквально всё.

Самое безопасное место хранения нужных вам макросов - в рабочем файле где он будет работать. Перетащите макрос или его модуль (могут быть несколько макросов) и др. нужные ему библиотеки в ваш файл и все должно работать. В сложном коде иногда можно увидеть вызовы макросов "с точками", они означают что вызывается не макрос из этого документа, а из другого, внешнего места:
Sub callMacro
Call Lib1.Module2.Macro1 ' или без Call
Call Module2.Macro1      ' или без Call
 
Если такой код не работает - проверьте наличие библиотек, модулей и макросов. Иногда библиотеку стоит загрузить кодом явно.
Следите за именами макросов - они не должны совпадать. Свои макросы именуйте особо, например с суффиксом, чтобы не пересечься с чужой либой.

Как только появится задача использовать один макрос во многих файлах - копировать его станет неудобно. Придется изучить концепцию Библиотеки/Модули и использовать ее. В документации и у Питоньяка описано, да и несложно разобраться. Макросы и скрипты на языке Python управляются и лежат в 3-х местах аналогично, но для вставки из в файл документа нужно поставить расширение APSO.oxt с офсайтов OpenOffice|LibreOffice.   

     
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

mikekaganski

Цитата: economist от 18 января 2024, 08:26Длинные пути часто проблемные из-за службы UAC Windows, антивируса, пробелов и кириллицы в имени

Любые такие проблемы нужно сообщать как баги. За последние годы я исправил практически все такие проблемы, которые нашёл в нашей багзилле. UAC тут ни при чём (или, вернее, её вмешательство не зависит от длины или символов).
С уважением,
Михаил Каганский

economist

Цитата: mikekaganski от 18 января 2024, 08:29Любые такие проблемы нужно сообщать как баги.

Согласен, повторяющиеся баги нужно сообщать. И подтверждаю что проблемы с UAC почти исчезли, встречаются только на экзотике типа LibreOffice 4/5 + Win XP/Vista/7, в домене с агрессивными или "заброшенными" групповыми политиками. Грамотно написать багрепорт не хватает тямы и просто сложно остаться объективным (как и понять что вообще происходит).

В таких средах LO может крашится (редко), как правило при открытии к-либо диалогов (IDE, правки Полей, Форм), запуске Слияния итд - но все это несистемно и происходит "в пылу" активной фоновой деятельности, если не сказать "в угаре".

Чаще всего юзер соглашается с тем что "сам виноват" и работает дальше. Благо восстановление файлов после крэша работает с какой-то 5-й версии LO безупречно.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

NewUser

economist
Спасибо за развёрнутый ответ. Не могли бы вы дать ссылку:
Цитата: economist от 18 января 2024, 08:26у Питоньяка описано

 

sokol92

Сайт Питоньяка.

Знаменитая книга "OpenOffice.org Macros Explained" - OOME_4_0.odt.
На мой взгляд - одна из лучших книг по программированию за всю историю. Книга рассчитана на читателей с разным уровнем подготовки. Я к ней обращался много раз и всегда находил что-то новое для себя. Еще одна непривычная особенность - книга опубликована в формате .odt и содержит в себе замечательную библиотеку макросов OOME_40, так что без промедления можно переходить от теории к практике.
При чтении этой книги нужно учитывать, что она написана, в основном, в 2011-2013 годах (отдельные уточнения вносились до 2018 г.), поэтому часть ее утверждений может не соответствовать текущему состоянию LibreOffice. Тем лучше для пытливого читателя - можно всё проверять и уточнять.

Для интересующихся компонентой LO Base Питоньяк написал столь же прекрасную книгу "OpenOffice.org Base Macro Programming" - AndrewBase.odt.

Понятно, что две книги не могут отразить весь накопленный материал замечательного автора. Много интересных тем изложено в третьей книге "Useful Macro Information For OpenOffice.org" - AndrewMacro.odt.
Владимир.

NewUser