2016/12/16 21:13
1/10
Basic LibrOffice Calc
< Basic LibreOffice
Basic LibrOffice Calc Szerző: Sallai András Copyright © Sallai András, 2011,2013 Licenc: GNU Free Documentation License 1.3 Web: http://szit.hu
Nyomógombhoz esemény rendelése Lépések: Elkészítjük a végrehajtandó makrót A munkafüzethez hozzáadjuk a nyomógombot A nyomógombhoz rendeljük a makrót Használatba vétel
Makró elkészítése Eszközök -> Makrók -> Makrók rögzítése ... A LibreOffice 3.3.2 verzióját használva ez utóbbi menüpont nekem nem aktív. Makrót persze így is tudok készíteni, csak felvenni nem. Később így tették ide: Eszközök -> Beállítások -> Általános -> Kísérleti (instalbil) funkciók engedélyezése A 3.6.x verziókban már külön jelölőnégyzetet kapott: Eszközök -> Beállítások -> Általános -> Makrórögzítés engedélyezése (korlátozott)
Gomb elhelyezése OpenOffice.org/LibreOffice: Nézet -> Eszköztárak -> Űrlap-vezérlőelemek Az előugró kúszóablakon a negyedik ikon a „Vezérlőelemek” Ezt legördítve tudunk elhelyezni gombokat. A tervező módot ki és bekapcsolni.
SzitWiki - http://szit.hu/
Last update: oktatas:programozás:basic:basic_libreoffice:calc http://szit.hu/doku.php?id=oktatas:programoz%C3%A1s:basic:basic_libreoffice:calc 2014/12/06 01:52
A makró és a nyomógomb összerendelése Az elkészült nyomógombhoz eseményt kell rendelnünk. Ki kell választanunk a nyomógombnak mely eseményéhez rendeljük a makrót. Célszerűen lehet ez az „Egérgomb lenyomása”. Szerkesztő módban a nyomógomb felett kattintsunk jobb egér gombbal, majd az előugró menüből válaszuk a „Vezérlőelem…” menüpontot. Az előugró ablakban az „Események” fülre kattintunk. Ott kikeressük a fenti eseményt (Egérgomb lenyomása), a mellette lévő gombra kattintunk, amelyen három pont van. Egy művelet hozzárendelése nevű ablak fog megjelenni. Ebben a „Makró …” gombra kattintva megkeressük az elkészített makrót, majd mindent okézok.
Használatba vétel Ha be van kapcsolva az űrlap-vezérlőelemek panel, találunk rajta egy Tervező mód be/ki gombot. Kapcsoljuk ki a tervező módot és használhatjuk a gombot.
Munkafüzet kezelése Basic-ben A Basic programokat a következő módon írhatunk: Alt + F11 Vagy: Eszközök -> Makrók -> Makrók rendezése -> OpenOffice.org Basic... Az előugró ablakban kiválasztjuk melyik makrót szeretnék szerkeszteni, esetleg újat kezdünk. Egy új makró elkezdéséhez, az előugró ablakban a „Main” makrónevét írjuk át saját új makrónévre. Ekkor a „Törlés” gomb „Új” feliratra vált. A makrók Basic nyelven íródnak. A felvétel mellett mi magunk is írhatunk ilyen programokat. Ehhez ismernünk kell egy dokumentum szerkezetét Basic nyelven.
Dokumentum felépítése Hozzáférés egy munkafüzet, első munkalapjához: Dim Dok As Object Dim Fuzet As Object Dok = ThisComponent Fuzet = Dok.Sheets(0) http://szit.hu/
Printed on 2016/12/16 21:13
2016/12/16 21:13
3/10
Basic LibrOffice Calc
A példában felveszünk egy Dok és egy Fuzet nevű változót, amelyek objektum típusúak lesznek. Az Dok magát a Dokumentumot fogja jelképezni, a Fuzet pedig a munkafüzetet. A harmadik sorban meghatározzuk, hogy a Dok változó milyen objektumra mutasson: ThisComponent, amely az aktuális dokumentumot jelenti. Az utolsó sorban a megadjuk, hogy a Fuzet változó a dokumentum melyik munkafüzetére mutasson. A Sheets(0) az első munkafüzetet jelenti. Látható, hogy a munkalapok számozása 0 értékkel kezdődik. A munkalapokra azonban hivatkozhatunk nevével is: Dim Dok As Object Dim Fuzet As Object Dok = ThisComponent Fuzet = Dok.Sheets.getByName("Munkalap1")
Dokumentum cellájára hivatkozás Cella = Fuzet.getCellByPosition(0,2) Esetleg angolosan: Cell = Sheet.getCellByPosition(,2) A munkafüzet első oszlopának száma 0, az első sorának száma 0. Tehát az A1 cellára így hivatkozunk: Cell = Sheet.getCellByPosition(0,0)
A cella egy értékének beállítása Cella.Value = 1000 vagy angolosan: Cell.Value = 1000
Egy lehetséges makró REM ***** BASIC ***** Sub Main Doc = ThisComponent Sheet = Doc.Sheets.getByName("Munkalap1") Cell = Sheet.getCellByPosition(0,2) Cell.Value = 1000 End Sub
SzitWiki - http://szit.hu/
Last update: oktatas:programozás:basic:basic_libreoffice:calc http://szit.hu/doku.php?id=oktatas:programoz%C3%A1s:basic:basic_libreoffice:calc 2014/12/06 01:52
Átlag számítás adott tartományban Sub Main Dok = ThisComponent Munkalap = Dok.Sheets(0) CellaTartomany = Munkalap.getCellRangeByName("B2:D5") MsgBox CellaTartomany.computeFunction(com.sun.star.sheet.GeneralFunction.AVERAGE) End Sub
Egy cella lekérdezése Sub Main dim sheet as object dim cell as object dim doc as object doc = thiscomponent sheet = doc.sheets.getbyname("Munkalap1") cell = sheet.getcellbyposition(0,0) MsgBox(cell.string, 120, "Címsor") End Sub
Összegzés Sub Main Sheet = ThisComponent.Sheets() tar = Sheet.getCellRangeByName("A1:A5") osszeg = for i = to 4 a = tar.getCellByPosition(,i).value osszeg = osszeg + a next i er = Sheet.getCellRangeByName("A6") er.Value = osszeg End Sub
Párbeszédablak MsgBox(„Kiírandó szöveg”, 16, „Címsor szövege”)
http://szit.hu/
Printed on 2016/12/16 21:13
2016/12/16 21:13
5/10
Szám Ikon Gombok Ok 0 1 Ok, Mégse 2 Megszakítás, Ismét, Mellőz 3 Igen, Nem, Mégse 4 Igen, Nem 5 Ismét, Mégse 16 X Ok 17 X Ok, Mégse 18 X Megszakítás, Ismét, Mellőzés 19 X Igen, Nem, Mégse 20 X Igen, Nem 21 X Ismét, Mégse 32 ? Ok 33 ? Ok, Mégse 34 ? Megszakítás, Ismét, Mellőzés 35 ? Igen, Nem, Mégse 36 ? Igen, Nem 37 ? Ismét, Mégse 48 ! OK 49 ! Ok, Mégse 50 ! Megszakítás, Ismét, Mellőzés 50 ! Igen, Nem, Mégse 51 ! Igen, Nem 52 ! Ismét, Mégse 64 izzó Ok
Egyszerű párbeszédablak Sub Main print "Valami" End Sub
Bevitel Sub Bevitel ertek = InputBox("Valai") MsgBox(ertek) End Sub http://help.libreoffice.org/Basic/InputBox_Function_Runtime/hu
Iteráció
SzitWiki - http://szit.hu/
Basic LibrOffice Calc
Last update: oktatas:programozás:basic:basic_libreoffice:calc http://szit.hu/doku.php?id=oktatas:programoz%C3%A1s:basic:basic_libreoffice:calc 2014/12/06 01:52
Sub Main For i = 1 to 10 print i Next i End Sub
Matematikai függvények Gyök: print sqr(9) A hatvány operátorral oldjuk meg: a = 3^2 Szám egész része: print int(3.7) ' Eredmény: 3
Véletlenszám Szám 0 és 2 között: print int(rnd * 3) Dobókocka: vel = int(rnd()* 6) + 1 1 és 6 közötti véletlen számot generál
Cellába írás Érték írása egy cellába: thisComponent.Sheets(0).getCellRangeByName("c6").Value = 47 Szöveg írása egy cellába: thisComponent.Sheets(0).getCellRangeByName("c7").String = "alma"
http://szit.hu/
Printed on 2016/12/16 21:13
2016/12/16 21:13
7/10
Basic LibrOffice Calc
Képlet írása egy cellába: thisComponent.Sheets(0).getCellRangeByName("c8").Formula = "=SUM(A2:A5)" Pozíció megadással: Sub Main Sheet = thisComponent.Sheets(0) Cell = Sheet.getCellByPosition(0, 0) 'Az A1-es cella Cell.Value = 85 End Sub Cella koordináta nevének megadásával: Sub Main Sheet = thisComponent.Sheets(0) Cell = Sheet.getCellRangeByName("C5") Cell.Value = 70 End Sub
A GeneralFunction felsorolt típus értékei com.sun.star.sheet.GeneralFunction.SUM NONE AUTO SUM COUNT AVERAGE MAX MIN PRODUCT – Minden számréték szorzata COUNTNUMS STDEV STDEVP VAR VARP
Példa1 Sub OsszeadoMakro Munkafuzet = thisComponent.Sheets(0) Cella = Munkafuzet.getCellRangeByName("a1") Cella.Value = 3 Cella = Munkafuzet.getCellRangeByName("a2") Cella.Value = 2 SzitWiki - http://szit.hu/
Last update: oktatas:programozás:basic:basic_libreoffice:calc http://szit.hu/doku.php?id=oktatas:programoz%C3%A1s:basic:basic_libreoffice:calc 2014/12/06 01:52
Cella = Munkafuzet.getCellRangeByName("a3") Cella.Value = 9 Cella = Munkafuzet.getCellRangeByName("a4") Cella.Value = 4 Cella = Munkafuzet.getCellRangeByName("a5") Cella.Value = 7 Cella = Munkafuzet.getCellRangeByName("a6") Cella.String = "Összeg:" CellaTartomany = Munkafuzet.getCellRangeByName("a1:a5") eredmeny = CellaTartomany.computeFunction(com.sun.star.sheet.GeneralFunction.SUM) Cella = Munkafuzet.getCellRangeByName("b6") Cella.Value = eredmeny End Sub
Példa2 Cella = thisComponent.Sheets(0).getCellRangeByName("A1") Cella.String = "Szöveg" Vagy szám esetén: Cella.Value = 45
Fájlkezelés Dim contentfile as String Open "c:\uzi.txt" for input as #1 Input #1, contentfile ThisComponent.Sheets.getByName("Munkalap1").getCellByPosition(0, 0).String = contentfile Input #1, contentfile ThisComponent.Sheets.getByName("Munkalap1").getCellByPosition(0, 1).String = contentfile Close #1
Egyéb könyvtárak betöltése
http://szit.hu/
Printed on 2016/12/16 21:13
2016/12/16 21:13
9/10
Basic LibrOffice Calc
BasicLibraries.LoadLibrary("Tools") DialogLibraries.LoadLibrary( "Standard" )
Külső linkek Vegyes LibreOffice Basic http://help.libreoffice.org/Basic/Basic_Help/hu
Magyar nyelvű anyag http://wiki.services.openoffice.org/wiki/HU/Documentation/BASIC_Guide http://wiki.services.openoffice.org/wiki/HU/Documentation/BASIC_Guide/Structure_of_Spreadshe ets http://wiki.services.openoffice.org/wiki/HU/Documentation/BASIC_Guide/Editing_Spreadsheet_Do cuments http://wiki.services.openoffice.org/wiki/HU/Documentation/BASIC_Guide/Formatting_Spreadshee t_Documents
Angol nyelvű anyag http://wiki.services.openoffice.org/wiki/Documentation/BASIC_Guide http://wiki.services.openoffice.org/wiki/Documentation/BASIC_Guide/Program_Overview http://en.wikipedia.org/wiki/StarOffice_Basic http://office-software.suite101.com/article.cfm/automating_openoffice_adding_buttons_to_calc
Függelék Írunk egy cellába REM
*****
BASIC
*****
Sub Main Dok = ThisComponent Fuzet = Dok.Sheets.getByName("Munkalap1") Cell = Fuzet.getCellByPosition(0,2) Cell.Value = 120 End Sub
SzitWiki - http://szit.hu/
Last update: oktatas:programozás:basic:basic_libreoffice:calc http://szit.hu/doku.php?id=oktatas:programoz%C3%A1s:basic:basic_libreoffice:calc 2014/12/06 01:52
From: http://szit.hu/ - SzitWiki Permanent link: http://szit.hu/doku.php?id=oktatas:programoz%C3%A1s:basic:basic_libreoffice:calc Last update: 2014/12/06 01:52
http://szit.hu/
Printed on 2016/12/16 21:13