Czy zdarza Ci się przy pracy z pakietem biurowym, że musisz stale wprowadzać ten sam tekst, formatować dane fragmenty w identyczny sposób czy powtarzać inne, monotonne czynności? Jeśli odpowiedź jest w twoim przypadku twierdząca, to nadszedł najwyższy czas na to, abyś poznał makra.
Pakiety biurowe: LibreOffice oraz OpenOffice.org posiadają wygodne narzędzie do tworzenia i zarządzania makrami, dzięki którym bezproblemowo ograniczysz sekwencje wielu czynności do jednego kliknięcia, co powinno znacząco uprzyjemnić pracę oraz wpłynąć na jej wydajność.
Całkiem możliwe, że wielu z was spotkało się już w przeszłości ze słowem „Makro”. Podejrzewam także, że kojarzyło się ono dotychczas z pisaniem skomplikowanych skryptów, a sam fakt korzystania z makr wydawał się być przywilejem jedynie dla zaawansowanych programistów. Jeśli więc tej chwili masz ochotę krzyknąć „Ale ja nie jestem programistą!” – wstrzymaj się, gdyż mam dla ciebie dobre wieści. Korzystając z programu Libre/OpenOffice.org nie musisz pisać nawet jednej linijki kodu. Z pomocą przychodzi nam bowiem wygodny w użyciu rejestrator oraz narzędzie pozwalające na organizację, zarządzanie i szybki dostęp do utworzonych już makr.
Przyjrzyjmy się szczegółowo procesowi tworzenia i zarządzania makrami w pakiecie LibreOffice. Jeśli używasz OpenOffice.org – nie musisz się przejmować i aktualizować swojego pakietu, gdyż wszystkie czynności wykonujesz w identyczny sposób. LibreOffice jest forkiem niedawnej wersji OO.org i nie zdążył się jeszcze znacząco zmienić.
Czym właściwie jest to makro?
Makro to po prostu sekwencja kolejnych wciśnięć klawiszy lub przycisków na pasku narzędziowym, które możemy zarejestrować i zapisać, tak aby mieć później do nich szybki dostęp z menu lub okienka narzędziowego. Kiedy wybierzemy i uruchomimy wybrane makro, zarejestrowany ciąg czynności zostanie automatycznie wykonany bez dodatkowego działania ze strony użytkownika. Makra mogą być bardzo proste lub złożone i skomplikowane – wszystko zależy od tego, czego oczekujemy od naszego narzędzia. Najważniejsze jest, aby makro mogło mieć duże możliwości, a zarazem było proste w użyciu. Dokładnie tego możemy właśnie oczekiwać od makr w LibreOffice. Nadszedł czas, aby stworzyć pierwsze własne makro!
Zarządzanie makrami
Jednak zanim przejdziemy do właściwego tworzenia makr, rzućmy okiem na narzędzie, które służy do ich organizacji. Aby je uruchomić, należy wybrać kolejno Narzędzia – Makra – Zarządzaj makrami – Makro…

Zrzut 1. Lista pre-instalowanych oraz stworzonych przez nas makr
Gdy ukaże nam się właściwe okno (zrzut 1), będziemy mogli zobaczyć listę pre-instalowanych oraz stworzonych przez nas makr w drzewku nawigacyjnym po lewej stronie. Jeśli chcesz, możesz w tym momencie otworzyć dowolne makro i edytować je. W tym przypadku jednak konieczna jest znajomość języka skryptowego, a na potrzeby tego artykułu zakładam, że takowego nie znasz. Pozostańmy więc przy podstawach, czyli narzędziu rejestrowania makr. Jeśli jednak jesteś już zaawansowanym użytkownikiem lub w przyszłości będziesz często pracował z makrami, to pamiętaj, że możesz używać tego okna do dowolnego edytowania makr, tak aby jak najlepiej odpowiadały twoim potrzebom.
Pamiętajmy jednak, że główną funkcją tego okna jest uruchamianie makr oraz ich przypisywanie do przycisków na pasku narzędziowym i wybranych zdarzeń. Dzięki temu będziesz mógł mieć jeszcze szybszy dostęp do często używanych makr.
W naszej wycieczce po oknie zarządzania makrami przejdźmy jeszcze na koniec do przycisku o nazwie „Zarządzaj…” (zrzut 2). Po jego kliknięciu ujrzysz okno, w którym będziesz mógł zająć się organizacją wszystkich posiadanych makr, a także stworzyć nowe lub edytować istniejące. Niestety tworząc makra w ten sposób, nie będziesz miał dostępu do rejestratora.
Tworzenie makr w ten sposób wymaga od użytkownika znajomości języka skryptowego. Poniżej zamieszczam zrzut ekranu, który pokazuje przykład ręcznego pisanie makr:
Może wygląda to nieco odstraszająco, ale nie przejmuj się – w tym przewodniku tworzenia makr nie będziesz musiał nic pisać.
Rejestrowanie makra
Czas w końcu przejść do konkretów. Przeanalizujemy teraz proces tworzenia makra za pomocą rejestratora na bardzo prostym przykładzie. Załóżmy, że piszesz we Writerze bardzo wiele listów, z których większość bądź wszystkie mają identyczne nagłówki. Aby zaoszczędzić czas przy tworzeniu późniejszej korespondencji, stworzymy makro, które automatycznie za nas wstawi pożądany nagłówek. Zadania, które będzie ono kolejno wykonywać są następujące:
- Wyśrodkowanie kursora na środku strony
- Ustawienie pogrubionej czcionki o rozmiarze 16
- Wprowadzenie tekstu nagłówka
Gdy już stworzymy nasze pierwsze makro, dodamy jego skrót do paska narzędziowego, aby móc w przyszłości wstawiać nagłówki listów za pomocą jednego kliknięcia.

Zrzut 4. Nagrywanie makra
Krok 1: Na początku musisz oczywiście utworzyć nowy dokument. Następnie w oknie Writera wybierz kolejno Narzędzia – Makra – Zarejestruj makro. Gdy to zrobisz, twoim oczom powinno ukazać się bardzo niewielkie okienko (zrzut 4), które będzie przypominać ci, że trwa nagrywanie i pozwoli w dowolnym momencie to nagrywanie przerwać.
Krok 2: Po otwarciu wspomnianego okienka możesz przejść do tworzenia nagłówka. Kliknij przycisk wyśrodkowania tekstu, następnie wybierz czcionkę i pogrubienie, a na koniec wprowadź żądany tekst.
UWAGA: Rejestrator makr nie potrafi nagrywać zaznaczania tekstu myszą. Jeśli zdarzy się, że najpierw wprowadzisz tekst, a potem dopiero stwierdzisz, że musisz go w pewien sposób sformatować, to musisz zaznaczyć tekst za pomocą klawiatury. Umieść kursor wprowadzania w żądanym miejscu (to możesz zrobić za pomocą myszy), a następnie przytrzymaj klawisz Shift i użyj klawiszy strzałek do zaznaczania. Potem możesz już sformatować tekst.
Krok 3: Gdy skończysz już pisanie nagłówka listu, wciśnij przycisk „Zakończ rejestrację”. Automatycznie ukaże się okienko organizera, wpisz w nim nazwę dla nowo nagranego makra, a następnie zapisz je, najlepiej w grupie „Moje makra”.

Zrzut 5. Dodawanie nowo utworzonego makra na pasek narzędziowy
Krok 4: A teraz zobaczysz, jak wstawić skrót do nowo utworzonego makra na pasek narzędziowy. Otwórz ponownie okno do zarządzania makrami i wybierz przycisk „Przypisz…”. W kolejnym oknie przełącz się na zakładkę „Paski narzędzi”, wybierz dowolny pasek i kliknij przycisk „Dodaj”. Pokaże się jeszcze jedno okno, w którym musisz znaleźć swoje makro, a następnie przeciągnąć je do poprzedniego okna, do listy przycisków wybranego paska narzędziowego (zrzut 5). Choć wygląda to trochę skomplikowanie, to myślę, że powinieneś sobie poradzić. Jeśli chcesz, możesz również dodać swoje makro do jednego z menu zamiast do paska narzędzi.
Krok 5: Jedyne, co ci teraz pozostało, to wypróbować nowo utworzone makro. Stwórz nowy dokument i wybierz przycisk twojego makra. Nagłówek listu, odpowiednio wyśrodkowany i sformatowany, powinien natychmiast pojawić się na górze dokumentu.
Przydatne, nie?
Czas na własną inicjatywę
Oczywiście ten poradnik jest jedynie krótkim wprowadzeniem do tworzenia makr bazującym na bardzo prostym przykładzie. Samodzielnie możesz tworzyć znacznie bardziej złożone narzędzia przy pomocy przedstawionych tu metod i to nie tylko działających w edytorze tekstowym, ale także w arkuszu kalkulacyjnym i prezentacjach. Skoro znasz już podstawy, wystarczy ci następnie tylko chęć działania i wyobraźnia. Szczerze zachęcam do tworzenia nowych makr. Ułatwi ci to życie i pozwoli zaoszczędzić wiele cennego czasu.
Powyższy tekst jest tłumaczeniem: Creating Macros Without Scripting in LibreOffice and OpenOffice.org

JakiLinux




Hej, dzięki wielkie. Pomocne i bardzo proste.
Od dwóch lat programuję w VBA. Próbowałem się przerzucić na OpenOffice, by coś w nim napisać. O ile komendy same w sobie są podobne to automatyczne generowanie makr to tragedia. Tak, wiem, można nauczyć się API OpenOffice'a nawet dla takich operacji jak kopiuj, wklej, zaznacz komórkę ale masochistą nie jestem. Oto co generuje OpenOffice.org – operacja polega na wpisaniu wartości 1 do komórki A1, wpisaniu wartości 2 do komórki A2, w komórce A3 robimy sumę, wartość pogrubiamy i dajemy czerwone tło.
Proszę bardzo:
sub ddfdf1112
rem ———————————————————————-
rem define variables
dim document as object
dim dispatcher as object
rem ———————————————————————-
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ———————————————————————-
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$A$1"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
rem ———————————————————————-
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "StringName"
args2(0).Value = "1"
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args2())
rem ———————————————————————-
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ToPoint"
args3(0).Value = "$A$2"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())
rem ———————————————————————-
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "StringName"
args4(0).Value = "2"
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args4())
rem ———————————————————————-
dim args5(0) as new com.sun.star.beans.PropertyValue
args5(0).Name = "ToPoint"
args5(0).Value = "$A$3"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args5())
rem ———————————————————————-
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())
rem ———————————————————————-
dim args7(0) as new com.sun.star.beans.PropertyValue
args7(0).Name = "ToPoint"
args7(0).Value = "$A$3"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args7())
rem ———————————————————————-
dim args8(0) as new com.sun.star.beans.PropertyValue
args8(0).Name = "Bold"
args8(0).Value = false
dispatcher.executeDispatch(document, ".uno:Bold", "", 0, args8())
rem ———————————————————————-
dim args9(0) as new com.sun.star.beans.PropertyValue
args9(0).Name = "Bold"
args9(0).Value = true
dispatcher.executeDispatch(document, ".uno:Bold", "", 0, args9())
rem ———————————————————————-
dim args10(0) as new com.sun.star.beans.PropertyValue
args10(0).Name = "BackgroundColor"
args10(0).Value = 16711680
dispatcher.executeDispatch(document, ".uno:BackgroundColor", "", 0, args10())
end sub
'==============================================
To samo z automatu w MS Excel 2003:
Sub Makro1()
'
' Makro1 Makro
' Makro zarejestrowane 2010-11-27, autor G
'
'
ActiveCell.FormulaR1C1 = "1"
Range("A2").Select
ActiveCell.FormulaR1C1 = "2"
Range("A3").Select
ActiveCell.FormulaR1C1 = "=SUM(R[-2]C:R[-1]C)"
Range("A3").Select
Selection.Font.Bold = True
With Selection.Interior
.ColorIndex = 3
.Pattern = xlSolid
End With
End Sub
Jeśli chodzi o makra to do tego aby OO lub LO był "user friendly" to jeszcze daleeeeka droga. Uczyć się OO Basic? Można, ale może lepiej poczekać na implementację VBA w OO/LO. Może kiedyś też i generator makr będzie napisany dla ludzi.
Niestety obawiam się, że pakiet OO ma szansę być dobrym dopiero jak zostanie przepisany od nowa. Na chwilę obecną to do bardziej profesjonalnych zastosowań no po prostu się nie nadaje.
Ale Twój przykład, byc może słuszny (nie znam VBA), jest obok tematu, który przecież dotyczy innego sposobu tworzenia makr – przez rejestrowanie kolejnych czynności ( na klawiaturze).
OOo miał szanse być dobry. W dniu kiedy postanowili odejść od Oracle (lub kiedy Oracle ich wykopał) trzeba było się uśmiechnąć do Novela, IBM czy Canonical i przyłączyć się do tego co już zostało zrobione, a nie dzielić włos na czworo, zakładać fundację gdzie nawiedzona, dumna i wszystkowiedząca społeczność z pewnością nic mądrego nie wymyśli by się wybronić z metki naszytej na OpenOffice'a brzmiącej: "OpenOffice fajny, ale MSOffice jednak lepszy/fajniejszy".
Wszystko byłoby OK z Twoim tokiem myślenia, gdyby nie to, że DocumentFoundation (to ci od LO) ma poparcie m.in. Canonicala, Novella, Red Hata, Googla, GNOME Foundation, FSF i OSI…
Jestem starej daty informatykiem i w moich czasach pisanie makr (jak np. w arkuszu kalkulacyjnym Quattro Pro) od pisania programów (np. w moim ulubionym Borland C czy Clipperze) różniło się tym, że makra były po prostu zapamiętaną sekwencją naciśnięć klawiszy, które nie wymagały deklarowania zmiennych itd. Możecie nie wierzyć, ale młody księgowy w dwa dni i dwie noce od poznania Quattro Pro, nie mając zielonego pojęcia o tym, że zmienne mogą mieć typy, metodą rejestracji naciśnięć klawiszy napisał w nim wspaniałą książkę podatkową, łącznie z modułem zadrukowywania formularzy PIT na igłówce. A ja próbuję właśnie napisać w LO proste makro (w moim pojęciu to nie jest pisanie makra, ale zaawansowanego programu), bez makra idzie mi to wspaniale, ale z makrem – właśnie wymiękam…