Jak utworzyć i uruchomić makro w LibreOffice Calc w systemie Linux

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!