Uwaga: przeglądasz tę stronę na urządzeniu o niewielkim ekranie (szerokość < 640px). Niektóre zamieszczone w artykule ilustracje i animacje mogą stać się nieczytelne po dopasowaniu ich do rozdzielczości tego ekranu.

Yestok.pl

Jerzy Moruś

© Wszystkie prawa zastrzeżone. Wykorzystanie całości serwisu lub jego fragmentów bez pisemnej zgody autora zabronione.

Makra w środowisku Apache OpenOffice i LibreOffice.



Opracowanie powstało w oparciu o wersję programu istniejącą w trakcie jego pisania, LibreOffice: 6.0.6, Apache OpenOffice: 4.1.5.


Makra to powszechnie stosowane określenie na niewielkie (przynajmniej w założeniu) programy wspomagające pracę różnych programów użytkowych. Od zwykłego programu makra odróżnia to, że nie są to samodzielne programy i w celu wykonania muszą być uruchamiane w środowisku tego programu, w którym zostały przygotowane. Nie wchodząc w szczegóły, wykonywanie makra polega na wykonywaniu kolejnych, zapisanych w wybranym języku programowania, poleceń przez specjalny moduł programu nazywany interpreterem.

Makra pisane są w języku programowania, a interpreter tego języka jest integralną częścią podstawowego programu. Pakiety LibreOffice i Apache OpenOffice mają wbudowany taki interpreter. A właściwie nawet kilka, gdyż dopuszczają pisanie makr w kilku językach. Najbardziej popularnym jest oczywiście Basic, jeden z najstarszych języków programowania. Jednak w pakietach (x)Office makra można programować także w językach: JavaScript, BeanShell i Python.

Prawdopodobnie większość użytkowników kojarzy makra z wykorzystywaniem ich w arkuszach kalkulacyjnych, w rzeczywistości mogą zostać napisane także dla innych programów wchodzących w skład pakietów (x)Office: Writer, Draw, Impress czy Base.

W pakietach (x)Office, do indywidualnych zastosowań, najczęściej wykorzystywany jest język programowania Basic.

Niniejsze opracowanie nie jest kursem języka programowania. Jego zadaniem jest opisanie, w jaki sposób użytkownik może uwzględniać wykorzystanie makr we własnych rozwiązaniach. Makra mogą być napisane przez samego użytkownika albo otrzymane z zewnątrz.

Od dawna wiadomo, że makra mogą być powodem zainfekowania komputera wirusem. Dla uspokojenia użytkowników, taki wirus, który może być makrem albo fragmentem kodu wtrąconego do makra nie weźmie się sam z siebie. Trzeba go napisać, włączyć do makra i dodać do dokumentu pakietu biurowego. Tworząc samodzielnie makro, nie spowodujemy pojawienia się w nim wirusa, chyba że jesteśmy przestępcami komputerowymi i taki mamy cel. Nasze zagrożenie nie wynika zatem z tego, że tworzymy makra, lecz z tego, że otwieramy dokumenty otrzymane z zewnątrz, zawierające makra.

Wykonanie makra można wymusić w rozmaity sposób. Na żądanie użytkownika, np. po naciśnięciu przycisku, do którego przypisane jest makro albo wykonaniu skrótu klawiaturowego, jaki został do makra przypisany. Z powodu wystąpienia określonego zdarzenia, np. otwarcie dokumentu, zmiany wartości w wybranych komórkach lub innego zdefiniowane zdarzenie. Wirusy najczęściej znajdują się w makrach, które są uruchamiane bezpośrednio po otwarciu dokumentu.

Autorzy makr przeznaczonych do rozpowszechniania wśród użytkowników mogą przygotowane przez siebie makra podpisać cyfrowo, korzystając z uzyskanego certyfikatu (płatnego bądź bezpłatnego). Podpis cyfrowy gwarantuje, że podpisany nim obiekt, w tym wypadku makro, pochodzi od zweryfikowanego autora. Fakt ten potwierdza certyfikat wydany przez centrum certyfikacji. Nie zwalnia nas to oczywiście z zachowania ostrożności przy chęci użycia takich makr. Makra podpisane cyfrowo mogą zmieniać (poprawiać, modyfikować, dopisywać nowe) tylko ich autorzy. Każda czynność edycyjna wykonana przy makrach pozbawia je podpisu cyfrowego i makra nie są już podpisane. Jeśli makra mają być podpisane cyfrowo, to trzeba to zrobić ponownie, a może to zrobić tylko autor, bo to on ma stosowny certyfikat. Można oczywiście pozostawić makra niepodpisane albo podpisać własnym certyfikatem. Jednak wówczas autor będzie już wiedział, że ktoś zmodyfikował jego pracę i może odmówić dalszej współpracy.

Pakiety biurowe (x)Office mają mechanizmy zarządzające możliwością uruchamiania makr w otwieranych dokumentach.

W pakietach (x)Office odpowiednie ustawienia bezpieczeństwa makr są dokonywane w oknie dostępnym po wybraniu polecenia „Narzędzia – Opcje…” i wskazaniu w gałęzi „LibreOffice” (lub „OpenOffice”) pozycji „Bezpieczeństwo”. Po wybraniu przycisku „Ochrona makr” (gdy korzystamy z LibreOffice) albo „Bezpieczeństwo makr” (gdy korzystamy z Apache OpenOffice) pojawi się nowe okno dialogowe.

Poziom bezpieczeństwa.

Pierwszy mechanizm zarządzający uruchamianiem makr wykorzystuje poziom zabezpieczenia uruchamiania makr. Wybrany poziom zaufania ustalamy w zakładce „Poziom bezpieczeństwa”.

Ustalanie poziomu bezpieczeństwa makr.
Rys. 1: Poziom bezpieczeństwa makr.

Wyróżnia się cztery poziomy:

Niski – makra są uruchamiane bezwarunkowo i bez ostrzeżenia, że dokument zawiera makra.

Średni – wymagane jest potwierdzenie makr pochodzących od wydawców niezaufanych, makra pochodzące od wydawców zaufanych są uruchamiane. Na tym poziomie zabezpieczeń mogą pojawić się dwa rodzaje komunikatów. Pierwszy, pokazany poniżej, pojawia się, gdy dokument zawiera makra niepodpisane.

Niepodpisane makra w dokumencie.
Rys.2: Otwieranie dokumentów z niepodpisanymi makrami przy poziomie bezpieczeństwa „Średni”.

Jeżeli makra są podpisane, ale podpis nie należy do zaufanych certyfikatów, wyświetlany jest komunikat pokazany na rys. 3.

Makra podpisane w dokumencie.
Rys. 3: Otwieranie dokumentów z podpisanymi makrami przy poziomie bezpieczeństwa „Średni”.

Użytkownik może makra wyłączyć albo włączyć. Przy czym domyślnym przyciskiem jest w obu przypadkach „Wyłącz makra”. Zapewnia to, że nawet odruchowe naciśnięcie klawisza ENTER nie spowoduje uruchomienia makr. W dokumencie, w którym wyłączono makra, nie można ich włączyć inaczej, niż przez ponowne wczytanie dokumentu i dokonanie nowego wyboru.
Jeżeli przed włączeniem makr zaznaczono opcję „Zawsze ufaj makrom z tego źródła” to certyfikat podpisu zostanie dodany do certyfikatów zaufanych.

Wysoki – uruchamiane są makra wyłącznie od zaufanych wydawców. Jeśli makro zostało podpisane przez wydawcę niezaufanego, to pojawi się komunikat prawie taki sam jak na rys. 3.

„Prawie” – oznacza, że w komunikacie aktywny jest tylko przycisk „Wyłącz makra” a przycisk „Włącz makra” jest niedostępny.

W przypadku zilustrowanego przykładu makra zostały podpisane certyfikatem „jermor”. Użytkownik może zadecydować o włączeniu makr tylko wtedy gdy zaznaczy opcję „Zawsze ufaj makrom z tego źródła”. Wówczas przycisk „Wyłącz makra” zostanie dezaktywowany a „Włącz makra” stanie się jedynym przyciskiem aktywnym co, po jego użyciu, oznacza dodanie podpisu do zaufanych certyfikatów.

Bardzo wysoki – uruchamiane są makra wyłącznie z bezpiecznych lokalizacji niezależnie od zaufania do dostawcy. Makra z innych lokalizacji nie są uruchamiane, nawet wówczas gdy mają zaufany podpis cyfrowy.

W przypadku tych dwóch ostatnich poziomów pojawiają się komunikaty informujące o wyłączeniu makr. Gdy makra nie są podpisane (dla poziomu „Wysoki”) lub gdy ustawiony jest poziom „Bardzo wysoki” i pliki nie pochodzą z bezpiecznych lokalizacji, w Apache OpenOffice pojawia się komunikat.

Informacja o wyłączeniu makr w Apache OpenOffice.
Rys.4: Komunikat o wyłączeniu makr w pakiecie Apache OpenOffice.

A w pakiecie LibreOffice odpowiedni komunikat wygląda tak:

Informacja o wyłączeniu makr w LibreOffice.
Rys. 5: Komunikat o wyłączeniu makr w pakiecie LibreOffice.

Oba komunikaty informują, że makra zostały wyłączone i aby umożliwić ich uruchomienie, trzeba zmodyfikować ustawienia bezpieczeństwa.



Wydawcy zaufani.

Drugim mechanizmem zarządzającym wykonywanie makr jest mechanizm zaufania do wydawcy. Za wydawców zaufanych uważa się tylko takich, których pliki znajdą się we wskazanych przez użytkownika bezpiecznych lokalizacjach oraz takich, którzy podpisali makra podpisem cyfrowym z zaufanym certyfikatem. W zasobach systemu operacyjnego znajduje się „magazyn” certyfikatów zawierający pobrane certyfikaty. Użytkownik może samodzielnie zadecydować o tym, czy certyfikat należy do zaufanych, czy nie. Ten wybór będzie wpływał na sposób dopuszczenia do wykonania makr. Makra niepodpisane są tożsame z dostawcami niezaufanymi.

Definiowanie zaufanych wydawców, czyli zaufanych certyfikatów i bezpiecznych lokalizacji, odbywa się po wybraniu zakładki „Zaufani wydawcy” w oknie dialogowym z rys. 1.

Zakładka "Zaufani wydawcy".
Rys. 6: Bezpieczeństwo makr. Wydawcy i lokalizacje (LibreOffice wersja 6).

Lista zaufanych certyfikatów pojawia się w górnej części okna. Certyfikat znajdzie się na tej liście po zaznaczeniu opcji „Zawsze ufaj makrom z tego źródła”. Zaufane certyfikaty można usuwać albo obejrzeć ich właściwości. Ta część okna dialogowego różni się od wyglądu analogicznego okna wyświetlanego w Apache OpenOffice, w którym oprócz daty ważności certyfikatu podane są jeszcze dodatkowe informacje, dla kogo i przez kogo został wydany certyfikat. Dane te są oczywiście także dostępne po wybraniu przycisku „Widok...” („Zobacz...” w Apache OpenOffice).

W dolnej części okna można wskazać bezpieczne lokalizacje plików (przycisk „Dodaj...”) albo usunąć już niepotrzebne lokalizacje.

Po standardowej instalacji pakietów Apache OpenOffice lub LibreOffice w opcjach ustawiony jest tylko średni poziom bezpieczeństwa makr.

Organizacja makr.

Każde utworzone makro musi zostać gdzieś ostatecznie umieszczone, aby móc je wywołać do wykonania. W pakietach LibreOffice i Apache OpenOffice makra przechowywane są w jednym z trzech dostępnych kontenerów.

Pierwszy kontener to Makra LibreOffice albo Makra OpenOffice (zależy to od używanego pakietu biurowego) i jest on powiązany z zainstalowanym oprogramowaniem. Makra tu umieszczone, są traktowane przez autorów jako integralna część projektu LibreOffice lub Apache OpenOffice. Makra są dostępne dla wszystkich użytkowników oprogramowania jednak z ograniczeniem polegającym na tym, że zawartość tego kontenera jest chroniona przed modyfikacjami. Kontener zawiera pewien zestaw makr dołączonych do pakietu instalacyjnego. Dla Basica jest to już dość bogaty i praktyczny zestaw, jednak przeznaczony do wykorzystania raczej przez bardziej zaawansowanych programistów. Dla pozostałych języków (no może z wyjątkiem Pythona) są to tylko przykłady makr, z których jedno wstawia na końcu dokumentu tekstowego słowa „Hello World”, drugie działa warunkowo i zamienia litery w zaznaczonym fragmencie tekstu według następującego algorytmu: jeżeli co najmniej dwie pierwsze litery zaznaczonego fragmentu są wielkie, to pierwszą pozostaw wielką, a pozostałe zamień na małe. Jeżeli tylko pierwsza litera jest wielka, to zamień wszystkie na małe. W pozostałych przypadkach zamień wszystkie litery na wielkie.

Te przykładowe makra nie są jedynymi dodanymi do oprogramowania. W wersji LibreOffice pakiet zawiera także wbudowany język programowania Logo (tak, to ten kojarzonym żółwiem) nazywany w tym pakiecie LibreLogo. Logo zostało napisane w języku Python i dlatego biblioteka Pythona jest bogatsza. Sesję Logo można otworzyć, wybierając „Widok – Paski narzędzi – Logo”.

Makra zawarte w tym kontenerze mają konkretną lokalizację. W 64-bitowym systemie Windows 10 znajdują się w ścieżce: „Program Files\LibreOffice\Share”. Aplikacje 32-bitowe znajdują się w folderze „Program Files (x86)”. W 32-bitowym systemie Windows jest jeden folder aplikacji i nosi on nazwę „Program Files”. Makra w języku Basic znajdują się w folderze „basic”, natomiast makra pozostałych języków, w odpowiadających językom folderach znajdujących się wewnątrz folderu „Scripts”. Tego kontenera, jak już wspomniałem, nie można modyfikować.

Drugi kontener nosi nazwę „Moje makra” i jest związany z kontem użytkownika. Makra tutaj umieszczone są dostępne tylko po zalogowaniu się konkretnego użytkownika.

Trzeci kontener jest zintegrowany z dokumentem utworzonym przy pomocy pakietu (x)Office i nosi taką samą nazwę jak cały dokument. Dokumenty pakietu (x)Office są same w sobie kontenerami plików opisujących wszystkie aspekty danego dokumentu. Makra zapisane w tym miejscu są więc częścią tego nadrzędnego kontenera. W efekcie mówimy, że są zapisane łącznie z plikiem. Można je uruchamiać tylko z tym plikiem i dzięki temu będą działały bez względu na to, gdzie (na jakim komputerze) znajdzie się plik. Oczywiście, jeśli spełnione będą warunki dopuszczające do uruchomienia makr.

Ogólna zasada kolekcjonowania makr zasadza się na tym, że kontener zawiera biblioteki (przynajmniej jedną), a makra znajdują się w tych bibliotekach. Odstępstwo pojawia się przy makrach tworzonych w Basicu. Tutaj biblioteka składa się z modułów (także przynajmniej jednego), a makra znajdują się w tych modułach.

Makro można zawsze uruchomić po wywołaniu polecenia „Narzędzia → Makra”. Na ilustracji poniżej widać dostępną sekwencję działań.

Polecenia umożliwiające pracę z makrami.
Rys. 7: Sekwencja poleceń uruchamiających wybrane makro (LibreOffice Calc w.6.0).

Zauważmy, że oprócz zarządzania makrami dostępnych jest jeszcze pięć dodatkowych poleceń. Pierwsze na tej liście, trzecie i ostatnie, dotyczą makr napisanych w języku Basic. Piąte pozwala podpisać cyfrowo makra znajdujące się w dokumencie, czyli te znajdujące się w trzecim wymienionym przeze mnie kontenerze. Przedstawiona powyżej ilustracja dotyczy pakietu LibreOffice w wersji 6.0.6 i użytego programu Calc. Tylko w tym programie i tylko w LibreOffice występuje polecenie „Edycja makr”. W Apache OpenOffice oraz pozostałych modułach LibreOffice ta pozycja na liście wyboru nie występuje.



Zarejestruj makro.

Pierwsze polecenie na liście – „Zarejestruj makro” – pozwala utworzyć makro bez jakiejkolwiek znajomości języka programowania. Ta funkcjonalność działa tylko w programach Writer i Calc. W pakiecie Apache OpenOffice to polecenie pojawia się zawsze. W pakiecie LibreOffice polecenie pojawia się tylko wówczas gdy w opcjach pakietu zaznaczono „Włącz nagrywanie makr”. Opcja ta znajduje się w lokalizacji: „Narzędzia → Opcje... → LibreOffice → Zaawansowane”.

Wszystkie działania wykonywane przez użytkownika są rejestrowane, a w momencie zakończenia rejestracji zostaną przekształcone w makro w języku Basic. Rejestrator ma jednak pewne ograniczenia. Nie są rejestrowane czynności w oknie innym niż to, w którym rejestrowanie zostało uruchomione. Nie są rejestrowane działania niezwiązane z zawartością dokumentu, np. nie można zarejestrować zmian dokonanych w oknie dialogowym „Opcje”.

System pomocy LibreOffice opisuje to tak:

Następujące czynności nie są rejestrowane:
Otwieranie okien nie jest rejestrowane.
Czynności przeprowadzone w innym oknie niż okno, w którym rejestrator został uruchomiony, nie są rejestrowane.
Przełączanie okien nie jest rejestrowane.
Czynności niezwiązane z zawartością dokumentu nie są rejestrowane. Na przykład: zmiany dokonane w oknie dialogowym Opcje, Menedżerze makr, funkcji dostosowania.
Zaznaczenia są rejestrowane, jeśli zostały wykonane przy pomocy klawiatury (przemieszczanie kursora), a nie przy użyciu myszy.
Rejestrator makr działa tylko w programie Calc i Writer.

Po wyborze tego polecenia pojawia się okienko dialogowe z informacją o tym, że rozpoczęła się rejestracja makra z przyciskiem „Zakończ rejestrację” umożliwiającym zakończenie rejestracji.

Okienko dialogowe "Zarejestruj makro".
Rys. 8: Okno dialogowe „Zarejestruj makro”.

Podczas rejestrowania zapamiętywane są wszystkie działania wykonywane w dokumencie, z wyjątkiem tych wymienionych powyżej. Dobre zaplanowanie tego procesu pozwala zbudować nawet złożone makra.

Po zakończeniu rejestracji okienko dialogowe nie zostaje zamknięte, lecz pojawia się nowe, w którym należy wybrać dla utworzonego makra lokalizację i nazwę. Okno to może wyglądać tak jak na ilustracji poniżej.

Okno dialogowe zapisania makra w bibliotece.
Rys. 9: Okno dialogowe wyboru kontenera i nazwy dla makra.

Pole „Nazwa makra” jest przeznaczone na wpisanie nazwy utworzonego makra. W obszarze „Zapisz makro w:” należy wybrać kontener, bibliotekę i moduł, w jakim makro ma zostać zapisane. Po wybraniu kontenera, biblioteki oraz modułu, w obszarze „Istniejące makra w:” (przy czym po dwukropku pojawi się nazwa wskazanego modułu) pojawią się nazwy makr już zapisanych w zaznaczonym module.
To okno dialogowe pozwala także na utworzenie nowej biblioteki w wybranym kontenerze a po wskazaniu biblioteki utworzenie nowego modułu. Na ilustracji powyżej oba przyciski dla tych działań są nieaktywne. Jest tak dlatego, że wybranym kontenerem jest kontener „Makra LibreOffice”, a w tym kontenerze nie można utworzyć ani nowej biblioteki, ani nowego modułu. Lista kontenerów zawiera także aktualnie otwarte pliki pakietu. Widać tam dwa kontenery. Jeden o nazwie „Bez tytułu 1” dotyczący utworzonego dokumentu, który nie został jeszcze zapisany (w tym przypadku dokumentu Calc) i drugi o nazwie „Makro1.odt”, który znajduje się w pliku tekstowym o takiej samej nazwie, w tym momencie równolegle otwartym w programie Writer.

Symbole „plusa” znajdujące się obok nazw kontenerów, po kliknięciu, pozwalają ukazać ich zawartość. Podobnie, analogiczne symbole umieszczone obok nazw bibliotek pozwalają pokazać zawartość biblioteki. W kontenerze „Moje makra” oraz w kontenerach plików zawsze powstaje biblioteka o nazwie „Standard”. Po utworzeniu jest ona pusta, nie zawiera żadnego modułu. Makro można zapisać do tej biblioteki albo utworzyć nową i w niej umieszczać swoje makra. Zawsze jednak makro musi znajdować się wewnątrz modułu. Jeżeli biblioteka nie zawiera żadnego modułu należy go utworzyć.

Rysunek poniżej pokazuje tworzenie nowego modułu w pustej bibliotece „Standard” znajdującej się w kontenerze „Bez tytułu 1”.

Tworzenie nowego modułu w wybranej bibliotece.
Rys. 10: Tworzenie nowego modułu w bibliotece.

O tym, że biblioteka nie ma żadnego modułu, świadczy brak symbolu „plus” przy nazwie biblioteki. System proponuje nazwę modułu „Module1”. Można ją zmienić na inną. Z każdym nowym modułem tworzony jest automatycznie wiersz komentarza i makro o nazwie „Main” niezawierające żadnych komend. W tej sytuacji każdy nowy moduł zawiera następujące wiersze:

REM ***** BASIC *****

Sub Main

End Sub

Jeśli zamiast podania nowej nazwy zostanie wskazana nazwa jednego z makr już istniejących w module, oznacza to zamiar zmodyfikowania tego istniejącego makra. Natomiast podanie nowej nazwy utworzy nową pozycję na liście makr w module. Po zapisaniu makra (przycisk „Zapisz”) okna dialogowe „Zarejestruj makro” (Rys. 8.) i „LibreOffice – Makra Basic” (Rys. 10.) zostaną zamknięte. Poniżej przykład biblioteki zawierającej własny moduł i makra w nim zawarte znajdującej się w kontenerze „Bez tytułu 1”.

Przykładowa zawartośc nazwanego modułu.
Rys. 11: Zawartość modułu „Rejestrowane” w bibliotece „Standard” kontenera „Bez tytułu 1”.

W bibliotece „Standard” został utworzony moduł „Rejestrowane” i zawiera on trzy makra. Makro „Main” oraz dwa makra o nazwach „P1” i „P2”.

Objętość wszystkich makr w module nie może przekroczyć 64 kB. Struktura modułowa pozwala napisać duże aplikacje przez podzielenie ich na mniejsze podprogramy i umieszczenie ich w oddzielnych modułach.

Wykonaj makro...

To polecenie pozwala wybrać makro do uruchomienia. Otwiera ono okno dialogowe pozwalające na wskazanie kontenera, biblioteki, modułu i w końcu makra, które ma zostać uruchomione. To okno dialogowe widać poniżej.

Wybieranie makra do uruchomienia.
Rys. 12: Uruchamianie wybranego makra.

Makro zostanie uruchomione po jego wskazaniu i kliknięciu przycisku „Uruchom”. W obszarze „Biblioteka” możliwy jest dostęp do bibliotek wszystkich języków programowania. Dla języków: JavaScript, BeanShell i Python, niemających struktury modułowej, już samo wskazanie biblioteki pozwala zobaczyć listę makr.

Na ilustracji pokazana jest zawartość modułu „Module1” biblioteki „Standard” kontenera „Makra1.odt”.



Edycja makr.

Same makra z punktu widzenia struktury pliku je zawierającego są czystymi tekstami, najczęściej kojarzonymi z rozszerzeniem nazwy pliku o skrót TXT. Dlatego osoba znająca język programowania może je pisać w dowolnym edytorze, ważne jest, aby zapisać plik w standardzie zwykłego pliku tekstowego, nadając jednak nazwę rozszerzenia skojarzoną z językiem programowania. Dla języka programowania Basic rozszerzeniem nazwy są litery „bas”, dla JavaScript – „js”, dla Pythona – „py” a dla BeanShell – „bsh”. Wielu dostawców przygotowało dedykowane edytory, które wspomagają pisanie kodu w wybranym języku. Np. kolorowanie składni powoduje wyróżnienie w pisanym kodzie słów kluczowych języka, nazw zmiennych, stałych i innych elementów kodu. Czasami takie edytory kontrolują formalną poprawność pisanego kodu, np. czy nawiasy są sparowane, czy użyte są właściwe zamknięcia instrukcji złożonych, a niekiedy dodają odpowiednie wcięcia dla lepszej czytelności kodu. Często zawierają rozwiązania pozwalające przetestować funkcjonowanie kodu, poprzez np. możliwość wykonywania instrukcji krok po kroku, sprawdzanie wartości, jakie przyjmują zmienne zawarte w kodzie itp.

Polecenie „Edycja makr” występuje od wydania LibreOffice wersji 6 wyłącznie w programie CALC. Polecenie dotyczy języka programowania Basic. Zostaje otwarte okno odrębnego modułu edytora makr „LibreOffice Basic”. Edytor ten umożliwia wybór kontenera, biblioteki i modułu podlegającego edycji, czyli w rzeczywistości wszystkich makr znajdujących się w wybranym module. Jedną z funkcji edytora jest możliwość wczytania makr z zewnętrznego pliku lub wyeksportowania makr znajdujących się w module do pliku zewnętrznego.

Fragment okna edytora LibreOffice Basic.
Rys. 13: Wycinek okna edytora języka Basic z widoczną pokolorowaną składnią języka.

Oprogramowanie (x)Office ma wbudowany tylko edytor języka Basic. Dla innych języków programowania należy posługiwać się edytorem zewnętrznym.

Zarządzaj makrami.

Ta pozycja jest rozbudowana o wybór języka programowania, którego makrami można będzie zarządzać.

LibreOffice – Basic...

Wywołanie tego polecenia otworzy pokazane już, na rys. 11. okno dialogowe. Po wskazaniu kontenera, biblioteki i modułu w lewej części okna dialogowego oraz wybraniu makra w prawej części można wykonać jedno z pięciu działań.

Poznane już „Uruchom”, uruchamiające makro.

„Usuń” – usuwające makro z modułu.

„Przypisz”, to polecenia pozwala przypisać makro do menu, skrótu klawiaturowego, zdarzenia lub paska narzędzi. Dzięki temu makro może być wywołane bezpośrednio z programu.

„Edycja” jest działaniem wywołującym wspomniany powyżej moduł edytora języka Basic. Niezależnie od tego, jaki moduł został wskazany przy wywołaniu edytora, umożliwia on dotarcie do dowolnego kontenera, biblioteki w nim zawartej i modułu. Z zastrzeżeniem, że system nie dopuści do żadnych działań w kontenerze „Makra LibreOffice”.

„Organizator” to ta część zarządzająca, która pozwala tworzyć i usuwać moduły w wybranych bibliotekach, tworzyć i usuwać okna dialogowe i w końcu tworzyć nowe biblioteki, eksportować je do zewnętrznych plików lub importować z innych źródeł do wybranego kontenera.

To polecenie otwiera okno dialogowe zawierające trzy zakładki. Okno pokazane z wyglądem każdej zakładki znajduje się poniżej.

Okno dialogowe "Organizator". Okno dialogowe "Organizator".
Rys. 14: Okna dialogowe organizatora dla poszczególnych zakładek.

Zakładka „Moduły” pozwala zarządzać modułami znajdującymi się w bibliotekach i pokazana jest w górnym rzędzie ilustracji, po lewej stronie. Zaznaczony moduł można edytować (przycisk „Edycja”). Nastąpi wówczas uruchomienie wspomnianego już edytora języka Basic, co pozwoli na edycję makr znajdujących się w module. Moduł można także usunąć (przycisk „Usuń”). Jeżeli zaznaczonym elementem w obszarze „Moduł” jest nazwa biblioteki albo modułu, jak na zaprezentowanej ilustracji, dostępny jest przycisk „Nowy...”. Dzięki niemu można utworzyć nowy moduł w bibliotece.

Zakładka „Okna dialogowe” pokazana jest w górnej części ilustracji po prawej stronie służy do dokonania analogicznych działań w stosunku do okien dialogowych.

Trzecia zakładka to „Biblioteki”. Wygląd tej zakładki znajduje się w drugim rzędzie tej ilustracji. W polu „Lokalizacja” należy wskazać kontener zawierający makra. Poniżej, w obszarze „Biblioteka”, znajdzie się lista bibliotek zawartych w wybranym kontenerze.

Przycisk „Edycja” spowoduje uruchomienie edytora języka Basic i udostępnienie pierwszego modułu do edycji.

Przycisk „Hasło...” jest dostępny tylko wtedy, gdy wybraną biblioteką nie jest biblioteka o nazwie „Standard”. Pozwala przypisać do biblioteki hasło dzięki któremu można będzie otworzyć bibliotekę (jej moduły) do edycji. Zabezpieczenie hasłem zapewnia ochronę napisanych makr przed zmianami dokonywanymi przez nieupoważnione osoby.

Przycisk „Nowy...” służy do utworzenia nowej biblioteki w kontenerze a przycisk „Usuń” do usunięcia biblioteki.

Dwa dodatkowe przyciski„Eksportuj...” i „Importuj...” pozwalają wyeksportować całą bibliotekę do wskazanej lokalizacji lub zaimportować bibliotekę z zewnątrz do kontenera. Biblioteka może zostać wyeksportowana jako biblioteka Basic (i wówczas nazwa biblioteki staje się we wskazanej lokalizacji nazwą foldera zawierającego wszystkie elementy biblioteki) albo pojedynczy plik rozszerzenia (plikami tego typu zarządza Menedżer rozszerzeń będący składową częścią projektu (x)Office, pliki te mają rozszerzenie nazwy OXT).



BeanShell...

Wywołanie tej opcji otwiera okno dialogowe zarządzania makrami.

Zarządzanie makrami BeanShell.
Rys. 15: Okno zarządzania makrami BeanShell.

Przycisk „Utwórz” pozwala utworzyć nową bibliotekę, jeżeli w strukturze zaznaczony jest kontener albo utworzyć nowe makro, jeżeli w strukturze zaznaczono bibliotekę. Wybraną bibliotekę lub makro można usunąć albo zmienić temu elementowi nazwę.

Jeżeli w strukturze zaznaczone zostało makro, to można przejść do jego edycji w wewnętrznym debuggerze. Tak jest przynajmniej w systemie Windows.

Debugger języka BeanShell.
Rys. 16: Wewnętrzny edytor języka BeanShell.

Mimo że narzędzie to jest bardzo proste, nie ma żadnych funkcji wspomagających pisanie programu, musi zostać użyte, wtedy gdy wynikowe makro ma zostać włączone do biblioteki w kontenerze pliku. Pliki programów (x)Office są w rzeczywistości, jak już wspomniałem, złożoną strukturą plików zapisanych pod własną nazwą i nie można ot tak wstawić do niej nowego pliku z makrem. Wykorzystanie debuggera zapewni, że zmodyfikowany plik będzie miał właściwą strukturę. Analogicznie jak to jest z edytorem Basica, nie można tutaj dokonać zmian w kontenerze „Makra LibreOffice”. Kontenery „Moje makra” i „Makra LibreOffice” można modyfikować standardowym menadżerem plików, o ile system operacyjny na to pozwoli.

JavaScript...

Zarządzanie makrami w tym języku jest podobne do omówionego powyżej języka BeanShell. Okno dialogowe ma postać:

Zarządzanie makrami w języku JavaScript.
Rys. 17: Okno zarządzanie makrami JavaScript.

Tutaj także można utworzyć nową bibliotekę, nowe makro, zmienić nazwy tym elementom albo je usunąć. Zastrzeżenie dotyczące dostępu do kontenera „Makra LibreOffice” są tu także utrzymane. Edytorem makr, cały czas piszę o środowisku Windows, jest debugger języka JavaScript – Rhino. Rhino jest implementacją języka JavaScript udostępnioną na zasadach Open Source i zarządzaną przez Mozilla Foundation.

Debugger Rhino JavaScript.
Rys. 18: Debugger Rhino JavaScript.

Debugger jest bardziej rozbudowany niż ten dotyczący BeanShell-a. Umożliwia np. uruchamianie makra krok po kroku, wyznaczanie punktu przerwania makra czy dokonywanie innych analiz kodu.

Python...

To ostatni z języków programowania makr. Obecnie wielu programistów uważa, że jest to zdecydowany następca najpopularniejszego dotychczas języka skryptowego, czyli JavyScript. Polecenie otwiera okno dialogowe jak na ilustracji poniżej.

Zarządzanie makrami w języku Python.
Rys. 19: Okno zarządzania makrami Python.

Okno zarządzania makrami nie umożliwia niczego innego poza uruchomieniem wybranego makra. Dlatego tworzenie i dołączanie makr do bibliotek jest możliwe tylko z zewnętrznych edytorów. W przypadku kontenera „Moje makra” można dokonać tego dowolnym menadżerem pliku. Dołączanie makr do kontenera pliku nie jest jednak realizowane w środowisku (x)Office. O ile włączanie nowych makr do kontenerów „Moje makra” i „Makra LibreOffice” jest możliwe z poziomu menadżerów pliku, to włączenie ich do kontenera pliku nie jest już sprawą prostą. Problem ten został poruszony m.in. na blogu Christophera Boureza w tym opracowaniu http://christopher5106.github.io/office/2015/12/06/openoffice-libreoffice-automate-your-office-tasks-with-python-macros.html [dostęp: 2018.08.31 14:00].



Podpis cyfrowy...

To polecenie pozwala podpisać podpisem cyfrowym makra zawarte w dokumencie. Przed podpisaniem pojawi się monit z prośbą o wskazanie jakim certyfikatem makra mają zostać podpisane. Podpisanie makr nie jest równoważne z podpisaniem dokumentu. Do podpisania dokumentu służy oddzielne polecenie „Plik – Podpisy cyfrowe...”.

Podpisać makra i/lub dokumenty mogą tylko ci, którzy mają odpowiedni certyfikat.

Zarządzaj oknami dialogowymi...

To polecenie pozwala zarządzać oknami dialogowymi zaprojektowanymi przez programistę lub tworzyć nowe okna dialogowe na potrzeby makra. Okna dialogowe, w odróżnieniu od makr, są same w sobie modułami. Jeden moduł okna dialogowego może zawierać tylko jedno okno dialogowe i zawiera definicje i właściwości okna dialogowego, właściwości elementów wchodzących w skład okna oraz przypisane zdarzenia.
Oto przykład prostego okna wymyślonego na potrzeby tego opracowania:

Przykład okna dialogowego.
Rys. 20: Przykładowe okno dialogowe.

Uaktywnienie wybranego okna dialogowego w kodzie makra spowoduje, że wyświetli się ono na ekranie. Można teraz wykonać czynności wewnątrz okna, w tym wypadku tylko jedną, wpisać nazwisko. Makro otrzyma ponownie sterowanie programem po wykonaniu określonego działania wewnątrz okna. Najczęściej jest to naciśnięcie jakiegoś przycisku.

W wybranym kontenerze okna dialogowe można usuwać, tworzyć lub edytować. Edytor okien dialogowych jest częścią edytora języka Basic.



Informacje pomocnicze dla użytkowników Apache OpenOffice i LibreOffice w systemie MacOs

System operacyjny Windows/Linux System operacyjny MacOs
Kliknięcie prawym przyciskiem myszki Control + kliknięcie
Klawisz CTRL (w skrótach klawiaturowych) Klawisz ⌘
F5 Nawigator Shift + ⌘ + F5
F11 Style i formatowanie ⌘ + T