Kā izveidot un palaist makro programmā LibreOffice Calc operētājsistēmā Linux

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ā!