Makró létrehozása és futtatása a LibreOffice Calc alkalmazásban Linux rendszeren

A LibreOffice a FOSS világ válasza a mainstream és szabadalmaztatott Microsoft Office Suite-ra. Az Office Productivity vezető szoftverfejlesztői és közreműködői által kifejlesztett szoftver a Microsoft Office teljes helyettesítését kínálja több operációs rendszeren.

A Microsoft Excel LibreOffice alkalmazás megfelelője a LibreOffice Calc. Számos funkcióval és az Excelhez hasonló felülettel rendelkezik. Beépített makrómotorral rendelkezik az automatizáláshoz szükséges makrók fejlesztéséhez és futtatásához. Azonban nem támogatja a Visual Basic-et, de támogatja a saját nyelvét; LibreOffice Basic, makrók programozásához.

A LibreOffice csomag előre telepítve van a legtöbb Linux disztribúcióban, beleértve az Ubuntut, a Debiant, a Fedorát és a CentOS-t.

Makró létrehozása és futtatása a LibreOffice Calc alkalmazásban

Először is hozzunk létre egy munkalapot néhány mintaadattal.

A Makrószervező megnyitásához nyissa meg a következőt: Eszközök » Makrók » Makrók rendezése » LibreOffice alapjai. Megnyílik a LibreOffice Basic makrók ablakot az alábbi képernyőképen látható módon.

Adjon meg egy új nevet a makrónak, majd kattintson az Új gombra az ablak jobb alsó sarkában.

Most látnia kell a LibreOffice Basic Makrószerkesztő képernyőjét.

Amint látjuk, a kézzel készített makrók alapértelmezés szerint a „Saját makrók és párbeszédablakok -> Standard -> Modul1” alatt jönnek létre.

Jelenleg két makró van jelen: Az egyik van , amely egy alapértelmezett üres makró, a többi pedig az teszt, a fent létrehozott makró. Most továbbfejlesztjük a tesztmakrót.

A makrónk a következő feladatokat látja el:

  • Ellenőrizze, hogy melyik embernek van szakma írója
  • Hozzon létre egy új lapot
  • Az írók összes bejegyzésének áthelyezése új lapra

A makrónk a következő:

Alteszt rem Bejegyzések áthelyezése szakmával Író új lapra dim crs(8) objektumként dim j mint Integer dim prof objektumként dim i mint Integer dim sh objektumként dim sh2 objektumként sh = ThisComponent.Sheets(0) crs(0) = sh.getCellRangeByPosition(0, 0, 3, 0) j = 1 for i = 1-től 5-ig x = 1 prof = sh.GetCellByPosition(3, i) rem Teljes sor tárolása változóban If prof.string = "Writer" Akkor crs(j) = sh.getCellRangeByPosition(0, i, 3, i) j = j + 1 End If next i rem Most hozzon létre egy új lapot, és írja oda ezeket az adatokat ThisComponent.Sheets.insertNewByName("Írók", 1) sh2 = ThisComponent.Sheets(1) i = 0 Do While not IsNull(crs(i)) sh2range = sh2.getCellRangeByPosition(0, i, 3, i) sh2range.setDataArray(crs(i).getDataArray) i = i + 1 Loop End Sub

Hadd magyarázzam el a fenti makrót részenként.

Alteszt. . . Vége Sub

teszt a makrónk neve, ezért a kódban így van jelölve Alteszt (al = szubrutin). Hasonlóképpen ezt a makrókódot utasítással fejezzük be Vége Sub. Vegye figyelembe, hogy ezek az utasítások automatikusan hozzáadódnak, amikor makrót hozunk létre a menüből, bár a felhasználó közvetlenül beírhatja ide a makrókódot, és a szubrutin neve makrónévnek minősül.

rem 

A LibreOffice Basic összes megjegyzése a kulcsszóval kezdődik rem. A rem betűvel kezdődő teljes sor megjegyzésnek minősül. Egy másik módja a felhasználás ' (egyetlen fordított vessző) a sor elején.

dim crs(8) mint objektum dim j mint Integer dim prof mint objektum dim i as Integer dim sh mint objektum dim sh2 mint objektum

Ez egy változó deklaráció a LibreOffice Basicben. Az általános szintaxis az homályos mint . Egy tömb deklarálásához használjon a crs változóhoz hasonló szintaxist, ahol 8 a tömb hossza.

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

ThisComponent az aktuális dokumentumra vonatkozik. Ebben az esetben ez egy Calc munkalap. A 0 indexű Sheet-et, azaz az első lapot sh változóban töltjük be. Vannak olyan funkciók is, amelyek a név használatával tölthetnek be egy munkalapot.

Ezután függvénynek hívjuk getCellRangeByPosition objektumból, és töltse be a crs tömbbe. A cellatartomány cellák csoportjára utal a lapon a pozíció alapján.

Vegye figyelembe, hogy az érvek, 0, 0 (0. oszlop, 0. sor) a tartomány kezdő celláját jelölik, és 3, 0 (3. oszlop, 0. sor) a tartomány záró celláját jelölik. És így 0, 0, 3, 0 mintalapunk első (címsor) sorára vonatkozik.

for i = 1-től 5-ig x = 1 prof = sh.GetCellByPosition(3, i) rem A teljes sor tárolása változóban If prof.string = "Writer" Akkor crs(j) = sh.getCellRangeByPosition(0, i, 3, i ) j = j + 1 Vége Ha a következő i

Használjuk a számára utasítást a sorok közötti ciklushoz. A számára blokk a-val végződik következő utasítás, amely minden iteráció végén növeli az i változót.

Ezután függvényt hívunk GetCellByPosition objektum sh. Paramétereket adunk át (3, i), azaz minden iterációnál a 3. oszlopban és az i. sorban lévő cella objektuma a prof változóban kerül lehívásra.

Ezután használunk egy Ha utasítás annak ellenőrzésére, hogy a prof cellában lévő érték „Writer”-e. Ha igen, akkor ismét meghívjuk a függvényt getCellRangeByPosition, ezúttal a én a kezdő és záró sorszám helyett. Ismét tároljuk a tömbben crs.

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

Először létrehozunk egy új lapot névvel Írók, pozícióban 1, ami a 2. pozíció, mivel az index 0-val kezdődik. Ekkor ebből az újonnan létrehozott lapból egy objektumot kapunk, hogy ebbe a lapba írhassuk be az írók adatait.

i = 0 Do, miközben nem IsNull(crs(i)) sh2range = sh2.getCellRangeByPosition(0, i, 3, i) sh2range.setDataArray(crs(i).getDataArray) i = i + 1 Loop

A Csinálni, miközben A ciklus utasítást akkor használjuk, ha feltételek alapján akarunk hurkolni, ellentétben az egész értékek tartományában való hurkolással, amelyhez használja számára mint korábban bemutattuk. Itt addig hurkolunk crs(i) nem nulla.

Ezután újra hívjuk getCellRangeByPosition hasonló módon, mint korábban, hogy egy tartomány objektumot kapjon az új lapon.

Végül két függvényt hívunk meg: getDataArray amelyről visszaadja az adatokat crs(i), azaz egy sor adat (egy íróról) az első lapról; és ezeket az adatokat a cellatartományba írjuk egy új lapon a segítségével setDataArray.

Végül mentse el a makrót innen Fájl » Összes mentése választási lehetőség.

A makró futtatásához lépjen a következőre: Eszközök » Makrók » Makró futtatása és válassza ki a makrót a Makróválasztó könyvtár „Saját makrók” könyvtárából. Kattints a Fuss gombot a Makrónév kiválasztása után.

A fenti makró futtatása a mintatáblázatunkon a következő eredményt adja.

Így hozhat létre makrókat a LibreOffice-ban. További információkért és lehetőségekért tekintse meg a hivatalos dokumentációt.

? Egészségére!