Как назначить макрос на запуск приложения Libreoffice?

Автор Sonchopin, 2 ноября 2018, 14:16

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

kompilainenn

Джон, ты уверен, что экстеншн компилер совместим с либрой последних версий?
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

JohnSUN

Как тебе сказать? Стопроцентную гарантию, конечно, дать не могу...
Да, с первой-второй-третьей попытки можно нарваться на ошибку компиляции. Благо, больше трех попыток сделать не получится - там всего-то три варианта: старый OpenOffice, новый OpenOffice и LibreOffice.
И да, с первой-второй-шестой попытки можно нарваться на ошибку установки - много фигурных скобок, похожих на грязные ругательства. Здесь вариантов всего два - "установить для меня" и "установить для всех". И после каждого - перезапуск офиса. И, может быть, попытка включить все-таки установившееся расширение. И опять-таки перезапуск...
Тем не менее, после некоторых танцев с бубнами, нащупываешь правильный путь и получаешь результат: кнопочки на панели там где и хотел, и все они работают.

Можно, конечно, не тратить силы и написать Bernard Marcelly, "Эй, сенсей, как насчет пофиксить вот-такое?" Но мне нравится музыка бубна  ;)
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

economist

Предлагаю рассмотреть возможность классической "ситуационной автоматизации" - сначала мы просто открываем документ "как есть". Затем пользователь жмет комбинацию клавиш. И запустившийся макрос - анализирует текущий открытый контекст: приложение, документ, шаблон, их создавший. И исходя из этого - макрос запускает другой макрос (возможно показав перед этим простой диалог типа Да/Нетъ/Не ведъаю). При этом никаких панелей, кнопок итп - не нужно. Ведь они и так применимы в особых, единичных случаях, а по большому счету - засоряют интерфейс.

Немного личной статистики: моя библиотека макросов насчитывает 62 макроса, объем 1,5 МБайта. Они применимым к XLS-файлам, большая часть которых происходит из 1С. Это типовые отчеты, реестры, выгрузки итп. Макросы их жмут, конвертят итп. Когда-то я думал что нужна панель с целым меню команд. Сделал. Но люди её "не понимали" и не запоминали. Это был серьезный удар по самолюбию и учебникам по юзабилити. А диалог с 20-ю кнопками по Ctrl+q - поняли.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

Sonchopin

Ураааа!!! У меня все получилось с Extension Compiler! JohnSUN, ОГРОМНОЕ СПАСИБО!!!  :-*

Sonchopin

economist, спасибо
Цитата: economist от  3 ноября 2018, 22:50Предлагаю рассмотреть возможность классической "ситуационной автоматизации" - сначала мы просто открываем документ "как есть". Затем пользователь жмет комбинацию клавиш.

Как я поняла, Вы предлагаете использовать сочетания клавиш вместо кнопок уже в работе, а не при установке? Согласна, это удобнее и быстрее. Меня сейчас волнует вопрос распространения макросов. Ведь сочетание клавиш сначала нужно назначить каждому пользователю? Сталкиваемся с той же проблемой - нужна ручная установка, а я хочу от этого уйти.

economist

#20
Цитата: Sonchopin от  4 ноября 2018, 22:05нужна ручная установка, а я хочу от этого уйти.

Хотите уйти от установки? - Так уйдите от неё! Я лет пять уговаривал своих админов на "автоматический" logon-cкрипт домена, который при загрузке незаметно распакует каждому пользователю свежайший и проверенный Portable LibreOffice, с моими настройками, нужными расширениями, словарями, скриптами... Словом, со всем тем, что НИКОГДА обычному юзеру не раздобыть самому. Тупо нет прав на установку и скачивание. И нет 1 тыс. оплачиваемых чел-часов (примерно), которые потратил на это я.

Вот так на сотнях PC нескольких наших офисов появился "одинаковый" LO. И именно он стал открывать файлы офисных форматов :-)) Впрочем, скачивание, распаковка и запуск portable LO - обычно доступны даже обычному пользователю домена Windows. Тем более что логон-скрипты за 15 лет - "ломались" и не раз внезапно переставали работать из-за обновлений и иных непонятных вещей.

Тут, на Форуме, могут возразить, что обычный, "устанавливаемый" LO - лучше. Но местные возражающие - часто LO-яльные сисадмины (извиняюсь за каламбур). А в жизни - всё наоборот (сисадмины не любят LO, по которому "так много вопросов"). И главное - большая часть "офисного населения" - увы, воспринимает LO как наказание (а MSO - как поощрение). Для них - любое, даже самое мизерное затруднение с LO - воспринимается как трагедия, "несовместимая с жизнью", которой нужно непременно придать характер глобальной беды, грозящей бизнесу как минимум катастрофой.  

LO Portable, когда у всех он "одинаковый" - это великое благо. Это не только уже "прописанные" горячие клавиши. Это и внедренные библиотеки макросов, параметры безопасности с привязкой к IP и сетевым шарам, общие шаблоны, стили, шрифты, элементы автотекста, автозамены, пользовательские словари орфографии с персоналиями и сокращениями, списки зарегистрированных баз данных, JDBC-драйверы доступа к СУБД, одинаковый Python 354 для 7+ и 352 для Vista/XP с библиотеками, ярлыки с custom-иконками, в конце концов. Это общая среда, в которой всё работает цельно, ведь "профиль" - один у всех. Продвинутые пользователи иногда присылают просьбы и ссылки на расширения, макросы итп. Если идея стоящая - после проверки она становится всеобщей. Если нет - такие юзеры - сами обеспечивают себя новинками, устанавливая расширения вручную (они удаляются при перезаписи).

Возвращаясь к самой теме: если назначить сочетание клавиш на макрос, определяющий "контекст" своего запуска и вызывающий другой макрос/диалог - можно всю основную библиотеку макросов разместить на сетевой шаре, сделать её read-only для основной массы людей. И обновлять/дополнять её - нескольким разработчикам (а их всегда почему-то немного), простой перезаписью поверх. Это позволит расширять и улучшать её бесконечно. А для удобного запуска этих макросов - конечно, придется нарисовать диалог с какими-то элементами управления.

Никакая кнопка или команда меню - не будут лучше, поскольку их недостаточно. Кроме того, их просто не будут видеть пользователи, страдающие синдромом рассеянного внимания (и "дефицитом внимания"). А это целых 24%, мельдоний не поможет :-)
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

bigor

Я делал через BasicAddonBuilder 0.5.2, но там в LO можно только пункт в меню добавить, панельки только для ОО срабатывали.
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

Sonchopin

Цитата: economist от  5 ноября 2018, 20:44"автоматический" logon-cкрипт домена, который при загрузке незаметно распакует каждому пользователю свежайший и проверенный Portable LibreOffice, с моими настройками, нужными расширениями, словарями, скриптами...

Круто! Очень серьезный подход. Правда для меня это пока слишком сложно - опыт разработки в LO - 1,5 месяца  :D, раньше кое-что делала на VBA.  Посмотрим, как у нас будет развиваться эта тема, сейчас только еще начинаем переходить с MSO на LO.  В любом случае, спасибо за то, что делитесь опытом:)

Sonchopin

Цитата: Bigor от  6 ноября 2018, 10:21Я делал через BasicAddonBuilder

Вот! Я вообще не поняла, как им пользоваться. Расширение установила, и по описаниям там должна была появиться какая-то кнопка, которая запускает мастера создания расширения. У меня так и не появилась, либо не там искала.

bigor

Цитата: Sonchopin от  6 ноября 2018, 12:32У меня так и не появилась, либо не там искала.
Посмотрите появилась ли у вас панель BasicAddonBuilder, может она "погашена"
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

economist

Sonchopin - опыт на VBA - это очень хорошо. С этими строчками 70% VBA-макросов из Excel - будут работать и в LO Calc:  


Option VBASupport 1
Option Compatible
'-----------------------------------------------
Sub test()
ThisComponent.BasicLibraries.VBACompatibilityMode=true  ' выполнить один раз
End sub
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

Kadet

Цитата: rami от  2 ноября 2018, 16:19Можно. В примере запустите макрос setMyEvent
rami, честно слямзил ваш макрос setEvent из демо. Спасибо!
Однако, не могу разобраться. Нужно повесить макрос на событие, относящееся к самому верхнему уровню LO.
Попробую объяснить как смогу.
Открываем любой документ LO, допустим Calc. Идём с Сервис=>Настройка и в закладку "События". Внизу есть окно "Сохранить в". Так в нём есть пункт - LibreOffice. Так вот, именно сюда мне и нужно повесить макрос, но никак не могу найти дорогу из макроса сюда. Не подскажете, как пройти?

sokol92

В указанном выше окне нажмите кнопку "Макрос" и выберите макрос из "Мои макросы".
Владимир.

rami

#28
Так:
Sub setEventInOffice       'назначает макрос событию на уровне офиса
Dim aProps(1) As New com.sun.star.beans.PropertyValue
aProps(0).Name  = "EventType"
aProps(0).Value = "Script"
aProps(1).Name  = "Script"
aProps(1).Value = "vnd.sun.star.script:Standard.Module1.Main?language=Basic&location=application"

Dim oGlobalEventBroadcaster, sEventName
sEventName = "OnLoad"
oGlobalEventBroadcaster = GetDefaultContext().getByName("/singletons/com.sun.star.frame.theGlobalEventBroadcaster")
oGlobalEventBroadcaster.Events.replaceByName(sEventName, aProps())
End Sub

Kadet

Цитата: sokol92 от  1 сентября 2020, 16:42В указанном выше окне нажмите кнопку "Макрос" и выберите макрос из "Мои макросы".
Ручками сие без проблем. Мне нужно это сделать макросом.

Цитата: rami от  1 сентября 2020, 16:45Так:
Спасибо!