LibreOffice este răspunsul lumii FOSS la suita principală și proprietară Microsoft Office. Dezvoltat de cei mai importanți dezvoltatori de software Office Productivity și colaboratori, oferă un înlocuitor complet pentru Microsoft Office pe mai multe sisteme de operare.
Echivalentul aplicației LibreOffice al Microsoft Excel se numește LibreOffice Calc. Vine cu o serie de caracteristici și o interfață similară cu Excel. Are un motor Macro încorporat pentru a dezvolta și rula Macro-uri pentru automatizare. Cu toate acestea, nu acceptă Visual Basic, dar acceptă propriul limbaj; LibreOffice Basic, pentru programarea macrocomenzilor.
Suita LibreOffice vine preinstalată în majoritatea distribuțiilor Linux, inclusiv Ubuntu, Debian, Fedora și CentOS.
Crearea și rularea unei macrocomenzi în LibreOffice Calc
Mai întâi, să creăm o foaie de lucru cu câteva date eșantion.
Pentru a deschide organizatorul de macrocomenzi, accesați Instrumente » Macro-uri » Organizare macrocomenzi » Noțiuni de bază despre LibreOffice. Se va deschide Macro-uri de bază LibreOffice fereastră așa cum se arată în captura de ecran de mai jos.
Introduceți un nume nou pentru Macro, apoi faceți clic pe butonul Nou din partea dreaptă jos a ferestrei.
Acum ar trebui să vedeți ecranul Editor Macro în LibreOffice Basic.
După cum putem vedea, macrocomenzile create manual sunt create în mod implicit în „Macronurile mele și dialogurile -> Standard -> Modulul1”.
În prezent sunt prezente două macrocomenzi: Una este Principal
, care este o macrocomandă goală implicită, iar altele este Test
, macro-ul pe care l-am creat mai sus. Acum vom îmbunătăți macrocomanda de testare.
Macrocomanda noastră va îndeplini următoarele sarcini:
- Verificați care toți oamenii au profesie de scriitor
- Creați o foaie nouă
- Mutați toate intrările pentru scriitori într-o foaie nouă
Mai jos este macrocomanda noastră:
Sub test rem Mutați intrările cu profesie Writer la noua foaie dim crs(8) ca obiect dim j ca Integer dim prof ca obiect dim i ca Integer dim sh ca obiect dim sh2 ca obiect sh = ThisComponent.Sheets(0) crs(0) = sh.getCellRangeByPosition(0, 0, 3, 0) j = 1 pentru i = 1 la 5 x = 1 prof = sh.GetCellByPosition(3, i) rem Stocați rândul complet în variabilă If prof.string = "Writer" Then crs(j) = sh.getCellRangeByPosition(0, i, 3, i) j = j + 1 End If next i rem Acum creați o foaie nouă și scrieți aceste date acolo ThisComponent.Sheets.insertNewByName("Writers", 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
Permiteți-mi să vă explic macrocomanda de mai sus secțiune cu secțiune.
Subtest. . . End Sub
Test
este numele macrocomenzii noastre, prin urmare, în cod, este notat ca Subtest
(sub = subrutină). În mod similar, încheiem acest cod macro cu declarație End Sub
. Rețineți că aceste instrucțiuni sunt adăugate automat atunci când creăm o macrocomandă din meniu, deși utilizatorul poate scrie direct codul macro aici și numele subrutinei va fi considerat drept nume macro.
rem
Toate comentariile din LibreOffice Basic încep cu cuvântul cheie rem
. O linie completă care începe cu rem este considerată comentariu. O altă modalitate este de a folosi '
(o singură virgulă inversată) la începutul rândului.
dim crs(8) ca obiect dim j ca Integer dim prof ca obiect dim i ca Integer dim sh ca obiect dim sh2 ca obiect
Aceasta este o declarație variabilă în LibreOffice Basic. Sintaxa generală este dim ca
. Pentru a declara o matrice, utilizați o sintaxă similară cu variabila crs, unde 8 este lungimea matricei.
sh = ThisComponent.Sheets(0) crs(0) = sh.getCellRangeByPosition(0, 0, 3, 0) j = 1
Această componentă
se referă la documentul actual. În acest caz, este o foaie de lucru Calc. Încărcăm Sheet cu indicele 0, adică prima foaie, în variabilă sh. Există, de asemenea, funcții pentru a încărca o foaie folosind numele.
Apoi numim funcția getCellRangeByPosition
a obiectului sh și încărcați-l în matricea crs. Intervalul de celule se referă la un grup de celule din foaie în funcție de poziție.
Rețineți că argumentele, 0, 0
(coloana 0, rândul 0) indică celula de pornire a intervalului și 3, 0
(coloana 3, rândul 0) indică celula finală a intervalului. Prin urmare 0, 0, 3, 0
se referă la primul rând (titlu) al foii noastre de probă.
pentru i = 1 la 5 x = 1 prof = sh.GetCellByPosition(3, i) rem Stocați rândul complet în variabilă Dacă prof.string = "Writer" Atunci crs(j) = sh.getCellRangeByPosition(0, i, 3, i ) j = j + 1 End If next i
Folosim a pentru
declarație pentru a parcurge rândurile. The pentru
blocul se termină cu a Următorul
instrucțiune, care incrementează variabila i la sfârșitul fiecărei iterații.
Apoi numim o functie GetCellByPosition
de obiect sh. Trecem parametri (3, i)
, adică la fiecare iterație, obiectul celulei de pe coloana 3 și rândul i este preluat în variabila prof.
Apoi folosim un Dacă
declarație pentru a verifica dacă valoarea din celula prof este „Writer”. Dacă este, numim din nou funcția getCellRangeByPosition
, de data aceasta, cu i
în locul numărului rândului de început și de sfârșit. Din nou îl stocăm în matrice crs
.
ThisComponent.Sheets.insertNewByName("Writers", 1) sh2 = ThisComponent.Sheets(1)
Mai întâi creăm o foaie nouă cu nume Scriitori
, la poziție 1
, care este poziția a 2-a, deoarece indexul începe de la 0. Apoi obținem un obiect din această foaie nou creată, astfel încât să putem introduce datele scriitorilor în această foaie.
i = 0 Do While not IsNull(crs(i)) sh2range = sh2.getCellRangeByPosition(0, i, 3, i) sh2range.setDataArray(crs(i).getDataArray) i = i + 1 Loop
The Face în timp ce
Instrucțiunea buclă este folosită atunci când dorim să facem bucla pe baza condițiilor, spre deosebire de bucla într-un interval de valori întregi, pentru care se utilizează pentru
asa cum sa aratat mai devreme. Aici, facem buclă până la crs(i)
nu este nulă.
Apoi, sunăm din nou getCellRangeByPosition
într-un mod similar ca înainte pentru a obține un obiect de gamă în noua foaie.
În cele din urmă, numim două funcții: getDataArray
care returnează datele de la crs(i)
, adică un rând de date (despre un scriitor) din prima foaie; și scriem aceste date în intervalul de celule într-o foaie nouă folosind setDataArray
.
În cele din urmă, salvați macro-ul de la Fișier » Salvați tot opțiune.
Pentru a rula macrocomanda, accesați Instrumente » Macro-uri » Executare macrocomenzi și selectați Macro-ul din directorul „My Macros” din Biblioteca Macro Selector. Apasă pe Alerga butonul după selectarea unui nume de macrocomandă.
Rularea macrocomenzii de mai sus pe foaia noastră de calcul eșantion produce următorul rezultat.
Acesta este modul de a crea macrocomenzi în LibreOffice. Pentru mai multe informații și opțiuni, consultați documentația oficială.
? Noroc!