Kako stvoriti i pokrenuti makronaredbu u LibreOffice Calc na Linuxu

LibreOffice je svjetski odgovor FOSS-a na mainstream i vlasnički Microsoft Office Suite. Razvijen od strane vodećih programera Office Productivity softvera i suradnika, nudi potpunu zamjenu za Microsoft Office na više operativnih sustava.

Ekvivalent aplikacije LibreOffice za Microsoft Excel zove se LibreOffice Calc. Dolazi s nizom značajki i sučeljem sličnim Excelu. Ima ugrađeni Macro engine za razvoj i pokretanje makronaredbi za automatizaciju. Međutim, ne podržava Visual Basic, ali podržava vlastiti jezik; LibreOffice Basic, za programiranje makronaredbi.

LibreOffice paket dolazi unaprijed instaliran u većini distribucija Linuxa, uključujući Ubuntu, Debian, Fedoru i CentOS.

Stvaranje i pokretanje makronaredbe u LibreOffice Calc

Prvo, napravimo radni list s nekim uzorcima podataka.

Da biste otvorili organizator makronaredbi, idite na Alati » Makronaredbe » Organiziranje makronaredbi » Osnove LibreOfficea. Otvorit će se LibreOffice Basic makronaredbe prozor kao što je prikazano na slici ispod.

Unesite novi naziv za makronaredbu, a zatim kliknite gumb Novo na donjoj desnoj strani prozora.

Sada biste trebali vidjeti zaslon uređivača makronaredbi u LibreOffice Basic.

Kao što vidimo, ručno kreirane makronaredbe se prema zadanim postavkama kreiraju pod “Moje makronaredbe i dijalozi -> Standardni -> Modul1”.

Trenutno su prisutne dvije makronaredbe: Jedan je Glavni, što je zadana prazna makronaredba, a druga je test, makronaredba koju smo kreirali iznad. Sada ćemo poboljšati testnu makronaredbu.

Naš makro će obaviti sljedeće zadatke:

  • Provjerite koji sve ljudi imaju profesiju pisac
  • Napravite novi list
  • Premjestite sve unose za pisce na novi list

Slijedi naš makro:

Subtest rem Premjesti unose sa strukom Writer na novi list dim crs(8) kao objekt dim j kao Integer dim prof kao objekt dim i kao Integer dim sh kao objekt dim sh2 kao objekt sh = ThisComponent.Sheets(0) crs(0) = sh.getCellRangeByPosition(0, 0, 3, 0) j = 1 za i = 1 do 5 x = 1 prof = sh.GetCellByPosition(3, i) rem Pohrani cijeli red u varijablu Ako prof.string = "Writer" Tada crs(j) = sh.getCellRangeByPosition(0, i, 3, i) j = j + 1 End If next i rem Sada kreirajte novi list i upišite ove podatke tamo ThisComponent.Sheets.insertNewByName("Writers", 1) sh2 = ThisComponent.Sheets(1) i = 0 Učini dok nije Null(crs(i)) sh2range = sh2.getCellRangeByPosition(0, i, 3, i) sh2range.setDataArray(crs(i).getDataArray) i = i + 1 Loop End Sub

Dopustite mi da vam objasnim gornji makro odjeljak po odjeljak.

Podtest . . . Kraj Sub

test je naziv naše makronaredbe, stoga je u kodu označen kao Podtest (pod = potprogram). Slično završavamo ovaj makro kod s naredbom Kraj Sub. Imajte na umu da se ove izjave automatski dodaju kada kreiramo makronaredbu iz izbornika, iako korisnik ovdje može izravno napisati kod makronaredbe i naziv potprograma će se smatrati imenom makronaredbe.

rem 

Svi komentari u LibreOffice Basic počinju s ključnom riječi rem. Cijeli red koji počinje s rem smatra se komentarom. Drugi način je korištenje ' (jedan obrnuti zarez) na početku retka.

dim crs(8) kao objekt dim j kao Integer dim prof kao objekt dim i kao Integer dim sh kao objekt dim sh2 kao objekt

Ovo je deklaracija varijable u LibreOffice Basic. Opća sintaksa je dim kao . Da biste deklarirali niz, koristite sintaksu sličnu varijabli crs, gdje je 8 duljina niza.

sh = ThisComponent.Sheets(0) crs(0) = sh.getCellRangeByPosition(0, 0, 3, 0) j = 1

Ova komponenta odnosi se na trenutni dokument. U ovom slučaju to je Calc Worksheet. Učitavamo Sheet s indeksom 0, tj. prvi list, u varijablu sh. Postoje i funkcije za učitavanje lista pomoću imena.

Zatim pozivamo funkciju getCellRangeByPosition objekta sh i učitajte ga u niz crs. Raspon ćelija odnosi se na skupinu ćelija na listu na temelju položaja.

Imajte na umu da argumenti, 0, 0 (stupac 0, red 0) označavaju početnu ćeliju raspona, i 3, 0 (stupac 3, red 0) označavaju završnu ćeliju raspona. Tako 0, 0, 3, 0 odnosi se na prvi (naslovni) red našeg uzorka.

za i = 1 do 5 x = 1 prof = sh.GetCellByPosition(3, i) rem Pohrani cijeli red u varijablu Ako prof.string = "Writer" Tada crs(j) = sh.getCellRangeByPosition(0, i, 3, i ) j = j + 1 Kraj Ako sljedeći i

Koristimo a za izjava za petlju kroz redove. The za blok završava s a Sljedeći izraz, koji povećava varijablu i na kraju svake iteracije.

Zatim pozivamo funkciju GetCellByPosition objekta sh. Prebacujemo parametre (3, i), tj. sa svakom iteracijom, objekt ćelije u stupcu 3 i retku i se dohvaća u varijabli prof.

Zatim koristimo an Ako izjava za provjeru je li vrijednost u ćeliji prof "Writer". Ako jest, ponovno pozivamo funkciju getCellRangeByPosition, ovaj put, sa i umjesto broja početnog i završnog reda. Opet ga pohranjujemo u niz crs.

ThisComponent.Sheets.insertNewByName("Writers", 1) sh2 = ThisComponent.Sheets(1)

Prvo kreiramo novi list s imenom Književnici, na poziciji 1, što je 2. pozicija, jer indeks počinje od 0. Tada dobivamo objekt ovog novonastalog lista, tako da možemo unijeti podatke pisaca u ovaj list.

i = 0 Uradi Dok nije IsNull(crs(i)) sh2range = sh2.getCellRangeByPosition(0, i, 3, i) sh2range.setDataArray(crs(i).getDataArray) i = i + 1 petlja

The Učini dok Naredba petlje koristi se kada želimo napraviti petlju na temelju uvjeta, za razliku od petlje u rasponu cjelobrojnih vrijednosti, za koje se koristi za kao što je ranije prikazano. Evo, petljamo do crs(i) nije nula.

Dalje, opet zovemo getCellRangeByPosition na sličan način kao prije da biste dobili objekt raspona u novom listu.

Konačno, zovemo dvije funkcije: getDataArray koji vraća podatke iz crs(i), tj. jedan red podataka (o piscu) s prvog lista; i ove podatke zapisujemo u raspon ćelija u novom listu pomoću setDataArray.

Konačno, spremite makronaredbu iz Datoteka »Spremi sve opcija.

Za pokretanje makronaredbe idite na Alati » Makronaredbe » Pokreni makronaredbu i odaberite svoju makronaredbu iz direktorija "Moje makronaredbe" u biblioteci za odabir makroa. Kliknite na Trčanje gumb nakon odabira naziva makronaredbe.

Pokretanje gornje makronaredbe na našem uzorku proračunske tablice daje sljedeći rezultat.

Ovo je način stvaranja makronaredbi u LibreOfficeu. Za više informacija i opcija pogledajte službenu dokumentaciju.

? Živjeli!