Kako ustvariti in zagnati makro v LibreOffice Calc v Linuxu

LibreOffice je svetovni odgovor FOSS na običajni in lastniški paket Microsoft Office. Razvili so ga vodilni razvijalci in sodelavci programske opreme Office Productivity, ponuja popolno zamenjavo za Microsoft Office v več operacijskih sistemih.

Aplikacija LibreOffice, enakovredna Microsoft Excelu, se imenuje LibreOffice Calc. Ima številne funkcije in vmesnik, podoben Excelu. Ima vgrajen makro motor za razvoj in zagon makrov za avtomatizacijo. Vendar ne podpira Visual Basica, podpira pa svoj jezik; LibreOffice Basic, za programiranje makrov.

Zbirka LibreOffice je vnaprej nameščena v večini distribucij Linuxa, vključno z Ubuntu, Debianom, Fedoro in CentOS.

Ustvarjanje in zagon makra v LibreOffice Calc

Najprej ustvarimo delovni list z nekaj vzorčnimi podatki.

Če želite odpreti organizator makrov, pojdite na Orodja » Makri » Organiziraj makre » Osnove LibreOffice. Odprlo bo Osnovni makri LibreOffice okno, kot je prikazano na spodnjem posnetku zaslona.

Vnesite novo ime za makro, nato kliknite gumb Novo v spodnjem desnem kotu okna.

Zdaj bi morali videti zaslon urejevalnika makrov v LibreOffice Basic.

Kot lahko vidimo, so ročno ustvarjeni makri privzeto ustvarjeni pod "Moji makri in pogovorna okna -> Standard -> Modul1".

Trenutno sta prisotna dva makra: Eden je Glavni, ki je privzeti prazen makro, drugi pa je test, makro, ki smo ga ustvarili zgoraj. Zdaj bomo izboljšali testni makro.

Naš makro bo opravil naslednje naloge:

  • Preverite, kateri vsi ljudje imajo poklic pisatelj
  • Ustvarite nov list
  • Premaknite vse vnose za pisce na nov list

Sledi naš makro:

Subtest rem Premakni vnose s poklicem Writer na nov list dim crs(8) kot predmet dim j kot Integer dim prof kot objekt dim i kot Integer dim sh kot objekt dim sh2 kot 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 Shrani celotno vrstico v spremenljivko Če prof.string = "Writer" Potem crs(j) = sh.getCellRangeByPosition(0, i, 3, i) j = j + 1 End If next i rem Zdaj ustvarite nov list in tam zapišite te podatke ThisComponent.Sheets.insertNewByName("Writers", 1) sh2 = ThisComponent.Sheets(1) i = 0 Do Čeprav ni IsNull(crs(i)) sh2range = sh2.getCellRangeByPosition(0, i, 3, i) sh2range.setDataArray(crs(i).getDataArray) i = i + 1 Konec zanke Sub

Naj vam razložim zgornji makro po odsekih.

Podtest. . . Končni sub

test je ime našega makra, zato je v kodi označen kot Podtest (pod = podprogram). Podobno končamo to kodo makra z izjavo Končni sub. Upoštevajte, da se ti stavki samodejno dodajo, ko ustvarimo makro iz menija, čeprav lahko uporabnik tukaj neposredno napiše kodo makra in ime podprograma bo obravnavano kot ime makra.

rem 

Vsi komentarji v LibreOffice Basic se začnejo s ključno besedo rem. Celotna vrstica, ki se začne z rem, se šteje za komentar. Drug način je uporaba ' (ena obrnjena vejica) na začetku vrstice.

dim crs(8) kot objekt dim j kot celo število dim prof kot objekt dim i kot celo število dim sh kot objekt dim sh2 kot objekt

To je deklaracija spremenljivke v LibreOffice Basic. Splošna sintaksa je dim kot . Če želite razglasiti matriko, uporabite sintakso, podobno spremenljivki crs, kjer je 8 dolžina matrike.

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

Ta komponenta se nanaša na trenutni dokument. V tem primeru gre za delovni list Calc. List naložimo z indeksom 0, to je prvi list, v spremenljivko sh. Obstajajo tudi funkcije za nalaganje lista z uporabo imena.

Nato pokličemo funkcijo getCellRangeByPosition predmeta sh in ga naložite v niz crs. Obseg celic se nanaša na skupino celic na listu na podlagi položaja.

Upoštevajte, da argumenti, 0, 0 (stolpec 0, vrstica 0) označujejo začetno celico obsega in 3, 0 (stolpec 3, vrstica 0) označujejo končno celico obsega. Tako 0, 0, 3, 0 se nanaša na prvo (naslovno) vrstico našega vzorčnega lista.

za i = 1 do 5 x = 1 prof = sh.GetCellByPosition(3, i) rem Shrani celotno vrstico v spremenljivko Če prof.string = "Writer" Potem crs(j) = sh.getCellRangeByPosition(0, i, 3, i ) j = j + 1 Konec Če naslednji i

Uporabljamo a za stavek za zanko skozi vrstice. The za blok se konča z a Naslednji stavek, ki poveča spremenljivko i na koncu vsake ponovitve.

Nato pokličemo funkcijo GetCellByPosition predmeta sh. Prenašamo parametre (3, i), torej z vsako ponovitvijo se objekt celice v stolpcu 3 in vrstici i pridobi v spremenljivki prof.

Nato uporabimo an Če izjava za preverjanje, ali je vrednost v celici prof »Writer«. Če je, ponovno pokličemo funkcijo getCellRangeByPosition, tokrat, z jaz namesto številke začetne in končne vrstice. Spet ga shranimo v matriko čr.

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

Najprej ustvarimo nov list z imenom Pisatelji, na položaju 1, ki je 2. pozicija, saj se indeks začne pri 0. Nato dobimo objekt tega novo ustvarjenega lista, da lahko v ta list vnesemo podatke piscev.

i = 0 Do Medtem ko ni IsNull(crs(i)) sh2range = sh2.getCellRangeByPosition(0, i, 3, i) sh2range.setDataArray(crs(i).getDataArray) i = i + 1 zanka

The Naredi Medtem stavek zanke se uporablja, ko želimo zanko izvesti na podlagi pogojev, v nasprotju z zanko v obsegu celih vrednosti, za kar uporabimo za kot je prikazano prej. Tukaj zankamo do crs(i) ni nič.

Nato spet pokličemo getCellRangeByPosition na podoben način kot prej, da dobite objekt obsega na novem listu.

Na koncu pokličemo dve funkciji: getDataArray ki vrne podatke iz crs(i), torej ena vrstica podatkov (o piscu) s prvega lista; in te podatke zapišemo v obseg celic na novem listu z uporabo setDataArray.

Na koncu shranite makro iz Datoteka »Shrani vse možnost.

Če želite zagnati makro, pojdite na Orodja » Makri » Zaženi makro in izberite svoj makro v imeniku »Moji makri« v knjižnici izbirnika makrov. Kliknite na teci po izbiri imena makra.

Zagon zgornjega makra v naši vzorčni preglednici povzroči naslednji rezultat.

To je način za ustvarjanje makrov v LibreOffice. Za več informacij in možnosti glejte uradno dokumentacijo.

? Na zdravje!