LibreOffice ir FOSS pasaules atbilde uz galveno un patentēto Microsoft Office Suite. To izstrādājuši vadošie Office produktivitātes programmatūras izstrādātāji un līdzstrādnieki, un tas piedāvā pilnīgu Microsoft Office aizstājēju vairākās operētājsistēmās.
Programmas Microsoft Excel LibreOffice programmas ekvivalents tiek saukts par LibreOffice Calc. Tam ir vairākas funkcijas un saskarne, kas ir līdzīga programmai Excel. Tam ir iebūvēts makro dzinējs, lai izstrādātu un palaistu automatizācijas makro. Tomēr tas neatbalsta Visual Basic, bet atbalsta savu valodu; LibreOffice Basic, makro programmēšanai.
LibreOffice komplekts ir iepriekš instalēts lielākajā daļā Linux izplatījumu, tostarp Ubuntu, Debian, Fedora un CentOS.
Makro izveide un palaišana programmā LibreOffice Calc
Vispirms izveidosim darblapu ar dažiem datu paraugiem.
Lai atvērtu makro organizētāju, dodieties uz Rīki » Makro » Kārtot makro » LibreOffice pamati. Tas atvērs LibreOffice pamata makro logu, kā parādīts zemāk esošajā ekrānuzņēmumā.
Ievadiet jaunu makro nosaukumu un pēc tam noklikšķiniet uz pogas Jauns loga apakšējā labajā pusē.
Tagad programmā LibreOffice Basic vajadzētu redzēt makro redaktora ekrānu.
Kā redzam, manuāli izveidotie makro pēc noklusējuma tiek izveidoti sadaļā “Mani makro un dialogi -> Standarts -> Module1”.
Pašlaik ir divi makro: viens ir Galvenā
, kas ir noklusējuma tukšs makro, un citi ir pārbaude
, makro, kuru izveidojām iepriekš. Tagad mēs uzlabosim testa makro.
Mūsu makro veiks šādus uzdevumus:
- Pārbaudiet, kurai visiem cilvēkiem ir rakstnieka profesija
- Izveidojiet jaunu lapu
- Pārvietot visus rakstītāju ierakstus jaunā lapā
Šis ir mūsu makro:
Apakšpārbaude rem Pārvietot ierakstus ar profesiju Writer uz jaunu lapu dim crs(8) kā objekts dim j kā vesels skaitlis dim prof kā objekts dim i kā vesels skaitlis dim sh kā objekts dim sh2 kā objekts sh = ThisComponent.Sheets(0) crs(0) = sh.getCellRangeByPosition(0, 0, 3, 0) j = 1, ja i = 1 līdz 5 x = 1 prof = sh.GetCellByPosition(3, i) rem Saglabāt pilnu rindu mainīgajā If prof.string = "Writer" Tad crs(j) = sh.getCellRangeByPosition(0, i, 3, i) j = j + 1 End If next i rem Tagad izveidojiet jaunu lapu un ierakstiet tur šos datus ThisComponent.Sheets.insertNewByName("Writers", 1) sh2 = ThisComponent.Sheets(1) i = 0 Do, bet nav IsNull(crs(i)) sh2range = sh2.getCellRangeByPosition(0, i, 3, i) sh2range.setDataArray(crs(i).getDataArray) i = i + 1 Cilpas beigu apakš
Ļaujiet man paskaidrot iepriekš minēto makro pa sadaļām.
Apakšpārbaude. . . Beigt apakš
pārbaude
ir mūsu makro nosaukums, tāpēc kodā tas tiek apzīmēts kā Apakšpārbaude
(apakšprogramma = apakšprogramma). Līdzīgi mēs beidzam šo makro kodu ar paziņojumu Beigt apakš
. Ņemiet vērā, ka šie paziņojumi tiek automātiski pievienoti, kad mēs izveidojam makro no izvēlnes, lai gan lietotājs var tieši šeit ierakstīt makro kodu, un apakšprogrammas nosaukums tiks uzskatīts par makro nosaukumu.
rem
Visi komentāri programmā LibreOffice Basic sākas ar atslēgvārdu rem
. Pilna rinda, kas sākas ar rem, tiek uzskatīta par komentāru. Vēl viens veids ir izmantot '
(viens apgriezts komats) rindas sākumā.
dim crs(8) kā objekts dim j kā vesels skaitlis dim prof kā objekts dim i kā vesels skaitlis dim sh kā objekts dim sh2 kā objekts
Šī ir mainīgā deklarācija programmā LibreOffice Basic. Vispārējā sintakse ir blāvs kā
. Lai deklarētu masīvu, izmantojiet mainīgajam crs līdzīgu sintaksi, kur 8 ir masīva garums.
sh = ThisComponent.Sheets(0) crs(0) = sh.getCellRangeByPosition(0, 0, 3, 0) j = 1
Šis komponents
attiecas uz pašreizējo dokumentu. Šajā gadījumā tā ir Calc darblapa. Mēs ielādējam Sheet ar indeksu 0, t.i., pirmo lapu, mainīgajā sh. Ir arī funkcijas, lai ielādētu lapu, izmantojot nosaukumu.
Tālāk mēs izsaucam funkciju getCellRangeByPosition
objektu sh un ielādējiet to masīvā crs. Šūnu diapazons attiecas uz šūnu grupu lapā, pamatojoties uz pozīciju.
Ņemiet vērā, ka argumenti, 0, 0
(0. sleja, 0. rinda) apzīmē diapazona sākuma šūnu un 3, 0
(3. sleja, 0. rinda) apzīmē diapazona beigu šūnu. Tādējādi 0, 0, 3, 0
attiecas uz mūsu parauga lapas pirmo (virsraksta) rindu.
for i = 1 līdz 5 x = 1 prof = sh.GetCellByPosition(3, i) rem Saglabāt pilnu rindu mainīgajā If prof.string = "Writer" Tad crs(j) = sh.getCellRangeByPosition(0, i, 3, i ) j = j + 1 Beigas Ja nākamais i
Mēs izmantojam a priekš
paziņojums, lai cilpu cauri rindām. The priekš
bloks beidzas ar a Nākamais
paziņojums, kas palielina mainīgo i katras iterācijas beigās.
Tālāk mēs izsaucam funkciju GetCellByPosition
objekta sh. Mēs nododam parametrus (3, i)
, t.i., ar katru iterāciju 3. ailē un i rindā esošās šūnas objekts tiek izgūts mainīgajā prof.
Tad mēs izmantojam an Ja
paziņojums, lai pārbaudītu, vai šūnā prof vērtība ir “Writer”. Ja tā ir, mēs vēlreiz izsaucam funkciju getCellRangeByPosition
, šoreiz, ar i
sākuma un beigu rindas numura vietā. Atkal mēs to saglabājam masīvā krs
.
ThisComponent.Sheets.insertNewByName("Writers", 1) sh2 = ThisComponent.Sheets(1)
Vispirms izveidojam jaunu lapu ar nosaukumu Rakstnieki
, pozīcijā 1
, kas ir 2. pozīcija, jo indekss sākas ar 0. Tad mēs iegūstam šīs jaunizveidotās lapas objektu, lai mēs varētu ievadīt šajā lapā rakstītāju datus.
i = 0 Darīt, bet nav IsNull(crs(i)) sh2range = sh2.getCellRangeByPosition(0, i, 3, i) sh2range.setDataArray(crs(i).getDataArray) i = i + 1 cilpa
The Darīt kamēr
cilpas priekšraksts tiek izmantots, ja mēs vēlamies veikt cilpu, pamatojoties uz nosacījumiem, nevis cilpu veidošanu veselu skaitļu vērtību diapazonā, kam izmantojiet priekš
kā parādīts iepriekš. Šeit mēs cilpu līdz crs(i)
nav nulle.
Tālāk mēs atkal zvanām getCellRangeByPosition
līdzīgā veidā kā iepriekš, lai jaunajā lapā iegūtu diapazona objektu.
Visbeidzot, mēs saucam divas funkcijas: getDataArray
kas atgriež datus no crs(i)
, t.i., viena datu rinda (par rakstītāju) no pirmās lapas; un mēs ierakstām šos datus šūnu diapazonā jaunā lapā, izmantojot setDataArray
.
Visbeidzot saglabājiet makro no Fails » Saglabāt visu opciju.
Lai palaistu makro, dodieties uz Rīki » Makro » Palaist makro un makro atlasītāja bibliotēkas direktorijā “Mani makro” atlasiet savu makro. Noklikšķiniet uz Skrien pogu pēc makro nosaukuma atlasīšanas.
Palaižot iepriekš minēto makro mūsu parauga izklājlapā, tiek iegūts šāds rezultāts.
Tas ir veids, kā programmā LibreOffice izveidot makro. Plašāku informāciju un iespējas skatiet oficiālajā dokumentācijā.
? Priekā!