LibreOffice on FOSS-maailman vastaus valtavirran ja omaan Microsoft Office Suiteen. Johtavien Office Productivity -ohjelmistokehittäjien ja -avustajien kehittämä se tarjoaa täydellisen korvaavan Microsoft Officen useissa käyttöjärjestelmissä.
Microsoft Exceliä vastaava LibreOffice-sovellus on nimeltään LibreOffice Calc. Siinä on useita ominaisuuksia ja Excelin kaltainen käyttöliittymä. Siinä on sisäänrakennettu makromoottori automaation makrojen kehittämiseen ja käyttämiseen. Se ei kuitenkaan tue Visual Basicia, mutta tukee omaa kieltään; LibreOffice Basic makrojen ohjelmointiin.
LibreOffice-paketti on esiasennettu useimpiin Linux-jakeluihin, mukaan lukien Ubuntu, Debian, Fedora ja CentOS.
Makron luominen ja suorittaminen LibreOffice Calcissa
Luodaan ensin laskentataulukko, jossa on joitakin esimerkkitietoja.
Avaa makrojen järjestäjä siirtymällä kohtaan Työkalut » Makrot » Järjestä makrot » LibreOffice Basics. Se avaa LibreOfficen perusmakrot ikkuna alla olevan kuvakaappauksen mukaisesti.
Anna makrolle uusi nimi ja napsauta sitten Uusi-painiketta ikkunan oikeassa alakulmassa.
Sinun pitäisi nyt nähdä Makroeditorin näyttö LibreOffice Basicissa.
Kuten näemme, manuaalisesti luodut makrot luodaan oletusarvoisesti kohdassa "Omat makrot ja valintaikkunat -> Vakio -> Moduuli1".
Tällä hetkellä käytössä on kaksi makroa: Yksi on Main
, joka on oletuksena tyhjä makro, ja muut ovat testata
, edellä luomamme makro. Parannamme nyt testimakroa.
Makromme suorittaa seuraavat tehtävät:
- Tarkista, millä kaikilla ihmisillä on ammattikirjoittaja
- Luo uusi taulukko
- Siirrä kaikki kirjoittajien merkinnät uuteen taulukkoon
Seuraava on makromme:
Alatesti rem Siirrä merkinnät ammattilla Writer uudelle taulukolle dim crs(8) objektina dim j kokonaislukuna dim prof objektina dim i kokonaislukuna dim sh objektina dim sh2 objektina sh = ThisComponent.Sheets(0) crs(0) = sh.getCellRangeByPosition(0, 0, 3, 0) j = 1 i = 1 - 5 x = 1 prof = sh.GetCellByPosition(3, i) rem Tallenna koko rivi muuttujaan If prof.string = "Writer" Sitten crs(j) = sh.getCellRangeByPosition(0, i, 3, i) j = j + 1 End If next i rem Luo nyt uusi taulukko ja kirjoita tiedot sinne ThisComponent.Sheets.insertNewByName("Kirjoittajat", 1) sh2 = ThisComponent.Sheets(1) i = 0 Tee vaikka ei IsNull(crs(i)) sh2range = sh2.getCellRangeByPosition(0, i, 3, i) sh2range.setDataArray(crs(i).getDataArray) i = i + 1 Loop End Sub
Selitän sinulle yllä olevan makron osioittain.
Alatesti. . . Lopeta ala
testata
on makromme nimi, joten koodissa se on merkitty nimellä Alatesti
(ali = aliohjelma). Vastaavasti lopetamme tämän makrokoodin lauseeseen Lopeta ala
. Huomaa, että nämä lauseet lisätään automaattisesti, kun luomme makron valikosta, vaikka käyttäjä voi kirjoittaa makrokoodin suoraan tähän ja aliohjelman nimeä pidetään makron nimenä.
rem
Kaikki kommentit LibreOffice Basicissa alkavat avainsanalla rem
. Täydellinen rem alkava rivi katsotaan kommentiksi. Toinen tapa on käyttää '
(yksi käänteinen pilkku) rivin alussa.
dim crs(8) objektina dim j kokonaislukuna dim prof objektina dim i kokonaislukuna dim sh objektina dim sh2 objektina
Tämä on muuttujan ilmoitus LibreOffice Basicissa. Yleinen syntaksi on himmeä kuin
. Käytä taulukon ilmoittamiseen samanlaista syntaksia kuin muuttuja crs, jossa 8 on taulukon pituus.
sh = ThisComponent.Sheets(0) crs(0) = sh.getCellRangeByPosition(0, 0, 3, 0) j = 1
Tämä komponentti
viittaa nykyiseen asiakirjaan. Tässä tapauksessa se on Calc-työtaulukko. Lataamme Sheetin indeksillä 0, eli ensimmäisen arkin muuttujassa sh. On myös toimintoja taulukon lataamiseen nimellä.
Seuraavaksi kutsumme funktiota getCellRangeByPosition
objektin sh ja lataa se taulukkoon crs. Solualue viittaa taulukon soluryhmään sijainnin perusteella.
Huomaa, että argumentit, 0, 0
(sarake 0, rivi 0) tarkoittavat alueen aloitussolua ja 3, 0
(sarake 3, rivi 0) ilmaisevat alueen loppusolun. Täten 0, 0, 3, 0
viittaa näytesivumme ensimmäiseen (otsikon) riviin.
for i = 1 - 5 x = 1 prof = sh.GetCellByPosition(3, i) rem Tallenna koko rivi muuttujaan If prof.string = "Writer" Sitten crs(j) = sh.getCellRangeByPosition(0, i, 3, i ) j = j + 1 Loppu Jos seuraava i
Käytämme a varten
lauseke rivien läpi. The varten
lohko päättyy kirjaimeen a Seuraava
lauseke, joka kasvattaa muuttujaa i jokaisen iteraation lopussa.
Seuraavaksi kutsumme funktiota GetCellByPosition
objektista sh. Ohjaamme parametrit (3, i)
, eli jokaisella iteraatiolla sarakkeen 3 ja rivin i solun objekti noudetaan muuttujassa prof.
Sitten käytämme an Jos
lauseke tarkistaaksesi, onko solun prof arvo "Writer". Jos on, kutsumme funktiota uudelleen getCellRangeByPosition
, tällä kertaa, kanssa i
rivin aloitus- ja loppunumeron sijaan. Jälleen tallennamme sen taulukkoon crs
.
ThisComponent.Sheets.insertNewByName("Writers", 1) sh2 = ThisComponent.Sheets(1)
Ensin luomme uuden arkin nimellä kirjailijat
, asemassa 1
, joka on 2. paikka, koska indeksi alkaa 0:sta. Sitten saamme tämän äskettäin luodun arkin objektin, jotta voimme syöttää kirjoittajien tiedot tälle arkille.
i = 0 Tee vaikka ei IsNull(crs(i)) sh2range = sh2.getCellRangeByPosition(0, i, 3, i) sh2range.setDataArray(crs(i).getDataArray) i = i + 1 Loop
The Tehdä, kun
loop-lausetta käytetään, kun haluamme silmukan perustua ehtoihin, toisin kuin silmukoita kokonaislukuarvojen alueella, jota varten käytä varten
kuten aiemmin esitettiin. Tässä kierretään asti crs(i)
ei ole tyhjä.
Seuraavaksi soitetaan uudestaan getCellRangeByPosition
samalla tavalla kuin ennenkin saadaksesi alueobjektin uuteen taulukkoon.
Lopuksi kutsumme kahta funktiota: getDataArray
joka palauttaa tiedot crs(i)
, eli yksi tietorivi (kirjoittajasta) ensimmäiseltä arkilta; ja kirjoitamme nämä tiedot solualueelle uudelle taulukolle käyttämällä setDataArray
.
Tallenna lopuksi makro kohteesta Tiedosto » Tallenna kaikki vaihtoehto.
Suorita makro siirtymällä kohtaan Työkalut » Makrot » Suorita makro ja valitse makrosi Macro Selector Libraryn "Omat makrot" -hakemistosta. Klikkaa Juosta -painiketta, kun olet valinnut makron nimen.
Yllä olevan makron suorittaminen esimerkkilaskentataulukossamme tuottaa seuraavan tuloksen.
Tämä on tapa luoda makroja LibreOfficessa. Lisätietoja ja vaihtoehtoja on virallisissa asiakirjoissa.
? Kippis!