Uruchamianie i zarządzanie makrami

Makra to niewielkie programy wywoływane wewnątrz LibreOffice. Za ich pomocą można automatyzować często wywoływane czynności oraz rozszerzać możliwości pakietu. Artykuł opisuje podstawowe zagadnienia z nimi związane — ich organizowanie oraz uruchamianie. Nie zabraknie także czegoś dla tych, którzy chcieliby samemu zacząć je pisać.

Dodawanie nowych makr

Większość użytkowników nie pisze makr samodzielnie. Zazwyczaj uzyskują je w inny sposób — znajdują w Internecie, dostają od zaprzyjaźnionych programistów czy kupują od bardziej doświadczonych kolegów i koleżanek. W takiej sytuacji podstawowym pytaniem jest: jak dodać kod makra do pakietu?

Przede wszystkim, należy wybrać z menu NarzędziaMakraZarządzaj makramiLibreOffice - Basic.... Pojawi się nowe okno.

Zanim przejdziemy do jego opisu, musimy wiedzieć, iż LibreOffice makra gromadzi w bibliotekach (podzielonych na trzy kategorie: makra użytkownika, makra pakietu oraz makra dokumentu). Każda biblioteka może zawierać dowolną liczbę plików makr, zaś każdy plik — dowolną liczbę funkcji.

We wspomnianym okienku, po lewej stronie, znajduje się drzewko przedstawiające dostępne biblioteki i pliki. Domyślnie dostępna jest biblioteka Standard zawierająca jeden plik. Po jej wybraniu, po prawej stronie dostępny będzie przycisk Nowy; jednak jego kliknięcie nie doda nowego pliku makra do biblioteki, a jedynie otworzy okno edycji ostatniego z plików i umieści w nim podstawowy kod nowej funkcji. Tak więc korzystanie z tego przycisku jest uzasadnione wtedy, gdy posiadamy zaledwie kilka bardzo prostych makr i nie będzie nam przeszkadzało wgranie ich wszystkich do jednego pliku. Jeżeli jednak posiadamy wiele makr, lub są one bardzo skomplikowane (zawierają kilka lub nawet kilkadziesiąt funkcji), prawdopodobnie chcemy je rozmieścić w kilku różnych plikach, a może nawet bibliotekach. W tym celu należy kliknąć przycisk Zarządzaj....

Podstawowe okno zarządzania makrami. Po lewej stronie znajduje się lista dostępnych makr, zaś po prawej przycisk do zarządzania nimi.

Pojawi się kolejne okno, zawierające trzy karty. W pierwszej z nich, Moduły, możemy tworzyć (przycisk Nowy...) i usuwać oraz edytować pliki w ramach dostępnych bibliotek, przy czym te dwie ostatnie opcje dostępne są tylko po zaznaczeniu któregoś z plików. Aby zaś dodać lub usunąć bibliotekę, należy przejść na kartę Biblioteki, gdzie dostępne są odpowiednie przyciski.

Okno zarządzania bibliotekami i plikami makr

Gdy już utworzymy tyle bibliotek i plików, ile potrzebujemy, możemy na karcie Moduły zaznaczyć któryś z tych ostatnich i kliknąć przycisk Edycja.

Otworzy się kolejne okno, tym razem przeznaczone do tworzenia makr. W jego lewej części znajduje się znane nam drzewo bibliotek, zaś w prawej — właściwe okno edycji. To właśnie w jego obszarze należy wkleić kod, który posiadamy.

Po zakończeniu wszystkich modyfikacji makr, należy zapisać zmiany (standardowym skrótem klawiaturowym, ikoną lub pozycją z menu) i zamknąć okno edytora.

Okno edytora makr LibreOffice z zaznaczonym głównym obszarem edycji.

Wykonywanie makr

Podstawowym sposobem na wykonanie makra jest wybranie z menu pozycji NarzędziaMakraWykonaj makro.... Pojawi się nowe okno, w którego lewej części znajduje się znana nam już biblioteka. Po wybraniu pliku makra, lista po prawej stronie wypełniona zostanie nazwami funkcji w zaznaczonym obiekcie. Po wybraniu którejś z nich wystarczy kliknąć przycisk Uruchom.

Okno uruchamiania makr. Z listy po lewej należy wybrać plik z makrami, zaś z listy poprawej — funkcję z pliku do uruchomienia.

Podstawowym ograniczeniem tej techniki jest pracochłonność — uruchomienie makra wymaga wielu kliknięć. Jeżeli makra uruchamiamy bardzo rzadko, pewnie nawet nie zwrócimy na to uwagi; jeżeli jednak nie wyobrażamy sobie pracy bez pewnych procedur, z pewnością zechcemy znaleźć bardziej efektywny sposób na ich uruchomienie. Istnieją trzy podejścia do tego zagadnienia: wykorzystanie skrótu klawiaturowego, dodanie przycisku na pasku narzędziowym i dodanie pozycji w menu. Poniżej przyjrzymy się wszystkim z nich.

Przypisywanie makra do skrótu klawiaturowego

Przypisywaniu poleceń do skrótów klawiaturowych poświęciłem osobny artykuł, do którego przeczytania zachęcam.

Po otworzeniu okna modyfikowania skrótów klawiaturowych, w części Kategoria znajdziemy pozycję Makra LibreOffice. W jej wnętrzu znajdziemy kategorie user (makra użytkownika), share (makra programu) oraz nazwy otwartych plików. Oczywiście w każdej z nich umieszczone są dostępne biblioteki, wewnątrz nich zaś — pliki makr. Po wybraniu któregoś z nich pozostaje nam przypisać określoną funkcję do skrótu klawiaturowego.

Dodawanie przycisku wywołującego makro

W tym celu wybieramy z menu NarzędziaDostosuj.... Pojawi się nowe okno, w którym przechodzimy do karty Paski narzędzi.

W górnej części okna z listy rozwijanej wybieramy pasek narzędzi. Jeżeli nie wiemy, który z nich wybrać, pozostawmy domyślnie wybrany Standardowy. Dobrym pomysłem jest jednak umieszczanie przycisków kontekstowo — np. przycisk uruchamiający makro modyfikujące tabelę dobrze jest umieścić na pasku narzędziowym tabel.

Następnie w środkowej części okna wybieramy pozycję, na prawo od której ma zostać umieszczony nasz przycisk. Klikamy przycisk Dodaj....

Okno modyfikowania pozycji na paskach narzędzi

Pojawi się okno służące do wyboru funkcji, która ma zostać przypisana do nowego przycisku. Na dole listy po lewej stronie znajdziemy makra, a po zaznaczeniu pliku z listy po prawej wybieramy funkcję. Na końcu klikamy przycisk Dodaj.

Po dodaniu nowej pozycji, możemy jeszcze ją zaznaczyć i kliknąć przycisk Zmień po prawej stronie. Pojawi się menu, za pomocą którego możemy zmienić ikonkę lub nazwę naszego przycisku.

Dodawanie do menu pozycji uruchamiającej makro

Podobnie jak w przypadku dodawania przycisku, przede wszystkim musimy z menu wybrać NarzędziaDostosuj.... W nowym oknie przechodzimy na kartę Menu.

Cała operacja przebiega analogicznie do dodawania przycisku. Wpierw w górnej części okna dobieramy z listy rozwijanej menu, które chcemy zmienić. Następnie na liście poniżej zaznaczamy pozycję, pod którą ma zostać dodany wpis uruchamiający makro. Klikamy przycisk Dodaj po prawej stronie.

W nowym oknie z listy po lewej wybieramy plik makra, zaś po prawej — funkcję. Ponownie klikamy Dodaj, po czym zamykamy to okno.

Za pomocą strzałek na prawo od listy pozycji w menu możemy zmieniać ich kolejność. Ponownie dostępne jest menu Zmień, ale tym razem za jego pomocą nie możemy zmienić ikonki, a tylko nazwę.

Pisanie własnych makr

Bardziej zaawansowani użytkownicy, czytelnicy z zacięciem programistycznym lub po prostu wszyscy chętni mogą pokusić się o tworzenie własnych makr.

Zagadnienie to jest niezwykle obszerne i nie ma możliwości chociażby skrótowego przybliżenia go w tym miejscu. Z tego powodu wszystkich zainteresowanych chciałbym odesłać do dwóch miejsc, gdzie mogą dowiedzieć się więcej na ten temat:

  • Strona internetowa Andrewa Pitonyaka — zawiera wiele odnośników oraz dostępnych za darmo książek opisujących tworzenie makr. Jest to doskonałe wprowadzenie do zagadnienia, jednak wymaga znajomości języka angielskiego.
  • Dokumentacja API LibreOffice — zawiera listę dostępnych metod i krótki ich opis. Przeznaczona jest raczej dla doświadczonych programistów, którzy potrzebują zagłębić się w szczegóły. Strona w języku angielskim.

Na zakończenie zaś chciałbym zwrócić uwagę na jeszcze jedną, bardzo ważną kwestię — od LibreOffice 4.0, każda nowa linia może wprowadzać pewne zmiany w API. Oznacza to, że część z przykładów z książek Andrewa Pitonyaka oraz część z posiadanych makr może przestać działać. Programiści LibreOffice obiecują jednak, że zmiany będą wprowadzać stopniowo i będą one dotyczyć głównie wewnętrznej konstrukcji pakietu. Wszystkie zmiany w API programu zostają wymienione w informacjach o wydaniu, które można znaleźć na stronach wiki projektu.

Podobał Ci się ten artykuł? Zapisz się na listę subskrybentów i otrzymuj informacje o następnych

komentarzy 12

  • mentorious napisał(a):

    Bardzo fajny blog. Na Twoim miejscu dodałbym jeszcze jakiś dział z szablonami do prezentacji i podobnych 😉

    • Mirosław Zalewski napisał(a):

      Swego czasu myślałem o stworzeniu tutaj jakiegoś działu z plikami do pobrania. Póki co doszedłem do wniosku, że świeciłby on pustkami. Ja nie mam czasu robić szablonów dla samego ich robienia, a dotychczas nie zrobiłem zbyt wielu na własny użytek. Jednak nawet gdybym je zrobił, to nie wiem, czy nie wolałbym ich (również?) wgrać do repozytorium LO, gdzie miałyby szanse dotrzeć do większej liczby użytkowników.
      Być może w przyszłości wrócę do tego pomysłu, ale nie jestem w stanie nic obiecać.

      W każdym razie, dziękuję za komentarz 🙂 .

  • Jose napisał(a):

    To może stworzyć dział „Upload” i ludziska sami podzielą się swoją twórczością?! 🙂
    Pozdrawiam, blog wiele mi pomógł!!

    • Mirosław Zalewski napisał(a):

      Muszę przyznać, że ten pomysł ma o wiele większe szanse realizacji 😉 . Postaram się wkrótce uruchomić odpowiednią podstronę. Zobaczymy, jakie będzie zainteresowanie.

  • VoyciecH napisał(a):

    Świetny blog. A co do Libre Office to szkoda, że nie ma rejestrowania makr. Czy ta funkcja jest w ogóle planowana?

    • Mirosław Zalewski napisał(a):

      Funkcja nagrywania makr istnieje, ale domyślnie jest wyłączona. Trzeba ją włączyć. W wersji 4.0 odpowiednia opcja znajduje się w Narzędzia → Opcje → LibreOffice → Zaawansowane, w wersji 3.6 zaś w Narzędzia → Opcje → LibreOffice → Ogólne.
      Po włączeniu można ją wywołać z menu: Narzędzia → Makra → Zarejestruj makro.

  • Agnieszka napisał(a):

    Witam, a czy w Libre jest opcja Wyłącz wszystkie makra (tak to się nazywało w klasycznym office, w centrum zaufania).
    Dziękuję za pomoc

  • Just napisał(a):

    Witam, w jakim języku są pisane makra w LibreOffice?
    (W Microsoft Office – Visual Basic for Applications, a tutaj? )

  • Krzysztof napisał(a):

    Witam, świetny blog, korzystam z niego kiedy muszę coś zrobić w Libre Office a nie znam innej, podobnej „kopalni wiedzy”. Z LO korzystam coraz częściej i zaczynam tęsknić za „automatyzacją poleceń” czyli makrami. Czy jest możliwość zablokowania makra tak, by mogło być wykonywane a nie można go edytować?

  • Roger napisał(a):

    Jak umieścić we WRITERZE wywołanie formuły (zapisanej jako funkcja, tj. w makro) w tabeli, żeby faktycznie zadziałała? O ile działa to w CALCU (tj. np.: =MOJAFUNKCJA(123)), o tyle zupełnie nie działa we WRITERZE (po prostu drukuje się 123, zamiast wynik wykonania tej funkcji). Ktoś rozwiązał ten problem?

  • Tomek napisał(a):

    Cześć,

    trochę nie mogę się w tym połapać ale wiem o co mi chodzi, używam zwykłego OO,
    mam makro, które działa tylko na moim loginie, czyli jest to jak wyczytałem wyżej makro użytkownika,

    -w jaki sposób i gdzie przenieść to makro aby działało u wszystkich użytkowników pakietu?

    -w jaki sposób przenieść to makro na inny komputer, żeby też działało na cały pakiet?
    nie wiem jaki przenieść plik i z jakiej do jakiej lokalizacji

  • […] LibreOffice – Uruchamianie i zarządzanie makrami Pomoc programu Photoshop – Tworzenie operacji Excel -Tworzenie lub usuwanie makra […]