Skriv og læs fra celler i et regneark med LibreOffice Basic

Her kan du læse hvordan du henter en værdi fra en bestemt celle i LibreOffice Calc med LibreOffice Basic, og hvordan du skriver til en celle. 

En af de egenskaber der anvendes mest i VBA, er at kommunikere mellem VBA koden og Exceldokumentet. I LibreOffice anvendes LibreOffice Basic, og her vil jeg kort beskrive hvordan du henter en værdi fra regnearket og ligeledes hvordan du skriver til en bestemt celle. Hvis du ikke læste min introduktionsartikel til LibreOffice Basic, kan du læse den her.

Hent værdi fra regneark

I nedenstående eksempel henter jeg værdien af hvad der står i feltet A1 og viser det i en dialogboks.

Sub Test1
 MsgBox ThisComponent.Sheets(0).getCellByPosition(0,0).string
End Sub

ThisComponent er en kode der referer til det regneark hvor Basic koden tilhører. Herefter anvendes Sheets til at vælge det ark der skal refereres til. Ark nummer 0 er det første ark, nummer 1 er det andet ark, nummer 2 det tredje ark osv.

Herefter anvendes koden getCellByPosition til at hente værdien i en bestemt celle i det ark der er valgt. Det første tal der står i parentesen referer til kolonne nummer, og det andet til rækkenummer. Det vil sige at A1 hedder (0,0), B1 hedder (1,0), A2 hedder (0,1) osv. Koden string referer til den værdi der står i feltet.

Hvis jeg for eksempel har stående “Hej” i feltet A1 og kører ovenstående kode får jeg følgende resultat.

Skriv værdi til regneark

Du kan også skrive en værdi tilbage til en celle i regnearket. Med nedenstående kode skriver jeg teksten “Hej med dig” til celle A1.

Sub Test1
 ThisComponent.Sheets(0).getCellByPosition(0,0).string = "Hej med dig"
End Sub

Det ser altså således ud efter koden er kørt.

Hvis du ville hente eller skrive talværdier i stedet for tekst, kunne du også anvende value i stedet for string.

Hent og skriv formel fra celle

Ovenstående kode henter og skriver som regel værdier fra og til celler i form af tekst. Hvis du nu hellere vil have hentet selve formlen, skal du bruge koden:

Sub Test1
 MsgBox ThisComponent.Sheets(0).getCellByPosition(0,0).formula
End Sub

Dette viser altså en dialogboks med selve formlen. Hvis der nu i felt A1 stod formlen =2+2 med resultat 4, ville ovenstående kode give resultatet =2+2. Havde jeg anvendt string i stedet for, ville resultatet være 4.

Hvis jeg vil skrive en formel til cellen skriver jeg:

Sub Test1
 ThisComponent.Sheets(0).getCellByPosition(0,0).formula = "=sqrt(4)"
End Sub

Dette tilføjer altså formlen =sqrt(4) til celle A1 og giver resultatet 2.

Referer til celler efter navn

Når du bruger koden getCellByPosition referer du til en celle ved dens positionsnummer. Hvis du i stedet vil refere til cellen med dens navn, bruger du koden:

Sub Test1
 ThisComponent.Sheets(0).getCellrangeByName("A2").string = "Test"
End Sub

Dette skriver altså teksten “Test” til feltet A2.

Det var lidt om hvordan du henter og skriver værdier fra celler i regneark i LibreOffice Calc ved at bruge LibreOffice Basic. Hvis du har nogle spørgsmål er du velkommen til at skrive en kommentar.

Skriv et svar