Kaip sukurti ir paleisti makrokomandą „LibreOffice Calc“ sistemoje „Linux“.

„LibreOffice“ yra FOSS pasaulio atsakymas į pagrindinį ir patentuotą „Microsoft Office Suite“. Sukurta pirmaujančių „Office Productivity“ programinės įrangos kūrėjų ir bendradarbių, ji visiškai pakeičia „Microsoft Office“ keliose operacinėse sistemose.

„Microsoft Excel“ programos „LibreOffice“ atitikmuo vadinamas „LibreOffice Calc“. Jame yra daug funkcijų ir sąsaja, panaši į „Excel“. Jame yra integruotas makrokomandų variklis, skirtas automatizuoti makrokomandas kurti ir paleisti. Tačiau jis nepalaiko Visual Basic, bet palaiko savo kalbą; LibreOffice Basic, skirtas makrokomandoms programuoti.

„LibreOffice“ rinkinys yra iš anksto įdiegtas daugelyje „Linux“ platinimų, įskaitant „Ubuntu“, „Debian“, „Fedora“ ir „CentOS“.

Makrokomandos kūrimas ir vykdymas „LibreOffice Calc“.

Pirmiausia sukurkime darbalapį su kai kuriais duomenų pavyzdžiais.

Norėdami atidaryti makrokomandų rengyklę, eikite į Įrankiai » Makrokomandos » Tvarkyti makrokomandas » LibreOffice pagrindai. Jis atidarys „LibreOffice“ pagrindinės makrokomandos langą, kaip parodyta toliau esančioje ekrano kopijoje.

Įveskite naują makrokomandos pavadinimą, tada spustelėkite mygtuką Naujas apatiniame dešiniajame lango kampe.

Dabar „LibreOffice Basic“ turėtumėte pamatyti makrokomandų rengyklės ekraną.

Kaip matome, rankiniu būdu sukurtos makrokomandos pagal numatytuosius nustatymus sukuriamos skiltyje „Mano makrokomandos ir dialogai -> Standartinis -> 1 modulis“.

Šiuo metu yra dvi makrokomandos: viena yra Pagrindinis, kuri yra numatytoji tuščia makrokomanda, o kita yra bandymas, makrokomandą, kurią sukūrėme aukščiau. Dabar patobulinsime bandomąją makrokomandą.

Mūsų makrokomandos atliks šias užduotis:

  • Patikrinkite, kurie žmonės turi rašytojo profesiją
  • Sukurkite naują lapą
  • Perkelti visus rašytojų įrašus į naują lapą

Štai mūsų makrokomandas:

Subtest rem Perkelti įrašus su profesija Rašytojas į naują lapą dim crs(8) kaip objektas dim j kaip sveikasis skaičius dim prof kaip objektas dim i kaip sveikasis skaičius dim sh kaip objektas dim sh2 kaip objektas sh = ThisComponent.Sheets(0) crs(0) = sh.getCellRangeByPosition(0, 0, 3, 0) j = 1, kai i = 1–5 x = 1 prof = sh.GetCellByPosition(3, i) rem Išsaugoti visą eilutę kintamajame If prof.string = "Writer" Tada crs(j) = sh.getCellRangeByPosition(0, i, 3, i) j = j + 1 End If next i rem Dabar sukurkite naują lapą ir įrašykite šiuos duomenis ThisComponent.Sheets.insertNewByName("Rašytojai", 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 Kilpos pabaigos sub

Leiskite paaiškinti pirmiau pateiktą makrokomandą po skyrelio.

Sub testas. . . Pabaigos sub

bandymas yra mūsų makrokomandos pavadinimas, todėl kode jis žymimas kaip Sub testas (sub = paprogramė). Panašiai užbaigiame šį makrokomandos kodą teiginiu Pabaigos sub. Atminkite, kad šie teiginiai automatiškai pridedami, kai sukuriame makrokomandą iš meniu, nors vartotojas gali tiesiogiai įrašyti makrokomandos kodą ir paprogramės pavadinimas bus laikomas makrokomandos pavadinimu.

rem 

Visi „LibreOffice Basic“ komentarai prasideda raktiniu žodžiu rem. Visa eilutė, prasidedanti raide rem, laikoma komentaru. Kitas būdas yra naudoti ' (vienas apverstas kablelis) eilutės pradžioje.

dim crs(8) kaip objektas dim j kaip sveikasis skaičius dim prof kaip objektas dim i kaip sveikasis skaičius dim sh kaip objektas dim sh2 kaip objektas

Tai yra LibreOffice Basic kintamojo deklaracija. Bendroji sintaksė yra blausiai kaip . Norėdami deklaruoti masyvą, naudokite sintaksę, panašią į kintamąjį crs, kur 8 yra masyvo ilgis.

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

Šis komponentas nurodo dabartinį dokumentą. Šiuo atveju tai yra Calc darbalapis. Įkeliame lapą su indeksu 0, ty pirmąjį lapą, į kintamąjį sh. Taip pat yra funkcijų įkelti lapą naudojant pavadinimą.

Toliau vadiname funkciją getCellRangeByPosition objekto sh ir įkelkite jį į masyvo crs. Ląstelių diapazonas reiškia langelių grupę lape pagal padėtį.

Atkreipkite dėmesį, kad argumentai, 0, 0 (0 stulpelis, 0 eilutė) žymi pradinį diapazono langelį ir 3, 0 (3 stulpelis, 0 eilutė) žymi diapazono pabaigos langelį. Taigi 0, 0, 3, 0 nurodo pirmąją (antraštės) mūsų pavyzdinio lapo eilutę.

for i = 1 iki 5 x = 1 prof = sh.GetCellByPosition(3, i) rem Išsaugoti visą eilutę kintamajame If prof.string = "Writer" Tada crs(j) = sh.getCellRangeByPosition(0, i, 3, i ) j = j + 1 Pabaiga Jei kitas i

Mes naudojame a dėl teiginys, kad būtų galima pereiti eilutes. The dėl blokas baigiasi a Kitas sakinys, kuris padidina kintamąjį i kiekvienos iteracijos pabaigoje.

Toliau vadiname funkciją GetCellByPosition objekto sh. Perduodame parametrus (3, i)t.y., su kiekviena iteracija 3 stulpelio ir i eilutės langelio objektas gaunamas kintamajame prof.

Tada mes naudojame an Jeigu teiginys, kad patikrintų, ar langelio prof reikšmė yra „Writer“. Jei taip, vėl iškviečiame funkciją getCellRangeByPosition, šį kartą, su i vietoje pradžios ir pabaigos eilučių numerio. Vėl saugome jį masyve krs.

ThisComponent.Sheets.insertNewByName("Rašytojai", 1) sh2 = ThisComponent.Sheets(1)

Pirmiausia sukuriame naują lapą su pavadinimu Rašytojai, padėtyje 1, kuri yra 2 vieta, nes indeksas prasideda nuo 0. Tada gauname šio naujai sukurto lapo objektą, kad galėtume įvesti rašančių duomenis šiame lape.

i = 0 Atlikti, nors nėra IsNull(crs(i)) sh2range = sh2.getCellRangeByPosition(0, i, 3, i) sh2range.setDataArray(crs(i).getDataArray) i = i + 1 ciklas

The Daryk Kol ciklas sakinys naudojamas, kai norime sudaryti ciklą pagal sąlygas, o ne kilpą sveikųjų skaičių reikšmių diapazone, kuriam naudokite dėl kaip parodyta anksčiau. Čia mes apsukame iki crs(i) nėra niekinis.

Toliau vėl skambiname getCellRangeByPosition panašiu būdu kaip ir anksčiau, kad naujame lape būtų gautas diapazono objektas.

Galiausiai vadiname dvi funkcijas: getDataArray kuri grąžina duomenis iš crs(i), t.y., viena duomenų eilutė (apie rašytoją) iš pirmojo lapo; ir šiuos duomenis įrašome į langelių diapazoną naujame lape naudodami setDataArray.

Galiausiai išsaugokite makrokomandą iš Failas » Išsaugoti viską variantas.

Norėdami paleisti makrokomandą, eikite į Įrankiai » Makrokomandos » Vykdyti makrokomandą ir pasirinkite savo makrokomandą iš „Mano makrokomandos“ katalogo makrokomandų parinkiklio bibliotekoje. Spustelėkite Bėk Pasirinkę makrokomandos pavadinimą.

Paleidus aukščiau pateiktą makrokomandą pavyzdinėje skaičiuoklėje, gaunamas toks rezultatas.

Taip LibreOffice galima kurti makrokomandas. Daugiau informacijos ir parinkčių rasite oficialiuose dokumentuose.

? Sveikinu!