LibreOffice to światowa odpowiedź firmy FOSS na główny i zastrzeżony pakiet Microsoft Office. Opracowany przez wiodących programistów i współtwórców oprogramowania Office Productivity, oferuje całkowite zastąpienie pakietu Microsoft Office w wielu systemach operacyjnych.
Aplikacja LibreOffice, odpowiednik Microsoft Excel, nazywa się LibreOffice Calc. Jest wyposażony w szereg funkcji i interfejs podobny do programu Excel. Posiada wbudowany silnik makr do tworzenia i uruchamiania makr w celu automatyzacji. Jednak nie obsługuje Visual Basic, ale obsługuje własny język; LibreOffice Basic, do programowania makr.
Pakiet LibreOffice jest preinstalowany w większości dystrybucji Linuksa, w tym Ubuntu, Debian, Fedora i CentOS.
Tworzenie i uruchamianie makra w LibreOffice Calc
Najpierw utwórzmy arkusz z przykładowymi danymi.
Aby otworzyć organizatora makr, przejdź do Narzędzia » Makra » Organizuj makra » Podstawy LibreOffice. Otworzy Podstawowe makra LibreOffice okno, jak pokazano na zrzucie ekranu poniżej.
Wprowadź nową nazwę makra, a następnie kliknij przycisk Nowe w prawym dolnym rogu okna.
Powinieneś teraz zobaczyć ekran edytora makr w LibreOffice Basic.
Jak widać, ręcznie tworzone makra są domyślnie tworzone w „Moje makra i okna dialogowe -> Standard -> Moduł1”.
Obecnie dostępne są dwa makra: Jedno to Główny
, które jest domyślnym pustym makro, a inne to test
, makro, które stworzyliśmy powyżej. Teraz ulepszymy makro testowe.
Nasze makro wykona następujące zadania:
- Sprawdź, które wszyscy ludzie mają zawód pisarza
- Utwórz nowy arkusz
- Przenieś wszystkie wpisy dla pisarzy w nowym arkuszu
Oto nasze Makro:
Podtest rem Przenieś wpisy z zawód Writer do nowego arkusza dim crs(8) as object dim j as Integer dim prof as object dim i as Integer dim sh as object dim sh2 as object sh = ThisComponent.Sheets(0) crs(0) = sh.getCellRangeByPosition(0, 0, 3, 0) j = 1 for i = 1 do 5 x = 1 prof = sh.GetCellByPosition(3, i) rem Zapisz cały wiersz w zmiennej If prof.string = "Writer" Then crs(j) = sh.getCellRangeByPosition(0, i, 3, i) j = j + 1 End Jeśli dalej i rem Teraz utwórz nowy arkusz i zapisz tam te dane ThisComponent.Sheets.insertNewByName("Writers", 1) sh2 = ThisComponent.Sheets(1) i = 0 Wykonuj, gdy nie jest zerem(crs(i)) sh2range = sh2.getCellRangeByPosition(0, i, 3, i) sh2range.setDataArray(crs(i).getDataArray) i = i + 1 Koniec pętli Sub
Pozwól, że wyjaśnię ci powyższe makro sekcja po sekcji.
Podtest . . . Napis końcowy
test
to nazwa naszego makra, stąd w kodzie jest oznaczone jako Test podrzędny
(podprogram = podprogram). Podobnie kończymy ten kod makra instrukcją Napis końcowy
. Zwróć uwagę, że te instrukcje są automatycznie dodawane, gdy tworzymy makro z menu, chociaż użytkownik może bezpośrednio wpisać kod makra, a nazwa podprogramu będzie traktowana jako nazwa makra.
Rem
Wszystkie komentarze w LibreOffice Basic zaczynają się od słowa kluczowego Rem
. Kompletna linia rozpoczynająca się od rem jest uważana za komentarz. Innym sposobem jest użycie '
(pojedynczy cudzysłów) na początku wiersza.
dim crs(8) jako obiekt dim j jako Integer dim prof jako obiekt dim i jako Integer dim sh jako obiekt dim sh2 jako obiekt
To jest deklaracja zmiennej w LibreOffice Basic. Ogólna składnia to przyćmione jak
. Aby zadeklarować tablicę, użyj składni podobnej do zmiennej crs, gdzie 8 to długość tablicy.
sh = ThisComponent.Sheets(0) crs(0) = sh.getCellRangeByPosition(0, 0, 3, 0) j = 1
Ten składnik
odnosi się do aktualnego dokumentu. W tym przypadku jest to arkusz kalkulacyjny. Arkusz z indeksem 0, czyli pierwszy arkusz, ładujemy w zmiennej sh. Istnieją również funkcje umożliwiające wczytanie Arkusza przy użyciu nazwy.
Następnie wywołujemy funkcję getCellRangeByPosition
obiektu sh i załaduj go do tablicy crs. Zakres komórek odnosi się do grupy komórek w arkuszu na podstawie pozycji.
Zauważ, że argumenty, 0, 0
(kolumna 0, wiersz 0) oznaczają początkową komórkę zakresu, a 3, 0
(kolumna 3, wiersz 0) oznaczają końcową komórkę zakresu. Zatem 0, 0, 3, 0
odnosi się do pierwszego (nagłówka) wiersza naszego przykładowego arkusza.
for i = 1 do 5 x = 1 prof = sh.GetCellByPosition(3, i) rem Zapisz cały wiersz w zmiennej If prof.string = "Writer" Then crs(j) = sh.getCellRangeByPosition(0, i, 3, i ) j = j + 1 Koniec Jeśli następny i
Używamy dla
instrukcja, aby przejść przez wiersze. ten dla
blok kończy się na Następny
instrukcja, która zwiększa zmienną i na końcu każdej iteracji.
Następnie wywołujemy funkcję Pobierz komórkę według pozycji
obiektu sh. Przekazujemy parametry (3, ja)
, czyli przy każdej iteracji obiekt komórki w kolumnie 3 i wierszu i jest pobierany w zmiennej prof.
Następnie używamy an Jeśli
oświadczenie, aby sprawdzić, czy wartość w komórce prof to „Writer”. Jeśli tak, ponownie wywołujemy funkcję getCellRangeByPosition
, tym razem z i
w miejsce początkowego i końcowego numeru wiersza. Ponownie przechowujemy to w tablicy crs
.
ThisComponent.Sheets.insertNewByName("Writers", 1) sh2 = ThisComponent.Sheets(1)
Najpierw tworzymy nowy arkusz o nazwie Pisarze
, na stanowisku 1
, która jest drugą pozycją, ponieważ indeks zaczyna się od 0. Następnie otrzymujemy obiekt tego nowo utworzonego arkusza, dzięki czemu możemy w tym arkuszu wprowadzić dane pisarzy.
i = 0 Wykonaj, gdy nie jestNull(crs(i)) sh2range = sh2.getCellRangeByPosition(0, i, 3, i) sh2range.setDataArray(crs(i).getDataArray) i = i + 1 Pętla
ten Czy podczas
Instrukcja loop jest używana, gdy chcemy wykonać pętlę w oparciu o warunki, w przeciwieństwie do pętli w zakresie wartości całkowitych, dla których użyj dla
jak pokazano wcześniej. Tutaj zapętlamy do crs(i)
nie jest pusta.
Następnie ponownie dzwonimy getCellRangeByPosition
w podobny sposób jak poprzednio, aby uzyskać obiekt zakresu w nowym arkuszu.
Na koniec nazywamy dwie funkcje: pobierz tablicę danych
który zwraca dane z crs(i)
, czyli jeden wiersz danych (o pisarzu) z pierwszego arkusza; i zapisujemy te dane w zakresie komórek w nowym arkuszu za pomocą setDataArray
.
Na koniec zapisz makro z Plik » Zapisz wszystko opcja.
Aby uruchomić makro, przejdź do Narzędzia » Makra » Uruchom makro i wybierz swoje makro z katalogu „Moje makra” w Bibliotece selektorów makr. Kliknij Uruchomić po wybraniu nazwy makra.
Uruchomienie powyższego makra w naszym przykładowym arkuszu kalkulacyjnym daje następujący wynik.
To jest sposób na tworzenie makr w LibreOffice. Aby uzyskać więcej informacji i opcji, zapoznaj się z oficjalną dokumentacją.
? Twoje zdrowie!