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: 2014/12/06 01:52 oktatas:programozás:basic:basic_libreoffice:calc http://szit.hu/doku.php?id=oktatas:programoz%c3%a1s:basic:basic_libreoffice:calc 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 ***** Doc = ThisComponent Sheet = Doc.Sheets.getByName("Munkalap1") Cell = Sheet.getCellByPosition(0,2) Cell.Value = 1000 SzitWiki - http://szit.hu/
Last update: 2014/12/06 01:52 oktatas:programozás:basic:basic_libreoffice:calc http://szit.hu/doku.php?id=oktatas:programoz%c3%a1s:basic:basic_libreoffice:calc Átlag számítás adott tartományban Dok = ThisComponent Munkalap = Dok.Sheets(0) CellaTartomany = Munkalap.getCellRangeByName("B2:D5") MsgBox CellaTartomany.computeFunction(com.sun.star.sheet.GeneralFunction.AVERAGE) Egy cella lekérdezése 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") Összegzés 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 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 Basic LibrOffice Calc Szám Ikon Gombok 0 Ok 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 print "Valami" Bevitel Sub Bevitel ertek = InputBox("Valai") MsgBox(ertek) http://help.libreoffice.org/basic/inputbox_function_runtime/hu Iteráció SzitWiki - http://szit.hu/
Last update: 2014/12/06 01:52 oktatas:programozás:basic:basic_libreoffice:calc http://szit.hu/doku.php?id=oktatas:programoz%c3%a1s:basic:basic_libreoffice:calc For i = 1 to 10 print i Next i 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: Sheet = thiscomponent.sheets(0) Cell = Sheet.getCellByPosition(0, 0) 'Az A1-es cella Cell.Value = 85 Cella koordináta nevének megadásával: Sheet = thiscomponent.sheets(0) Cell = Sheet.getCellRangeByName("C5") Cell.Value = 70 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: 2014/12/06 01:52 oktatas:programozás:basic:basic_libreoffice:calc http://szit.hu/doku.php?id=oktatas:programoz%c3%a1s:basic:basic_libreoffice:calc 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 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 ***** Dok = ThisComponent Fuzet = Dok.Sheets.getByName("Munkalap1") Cell = Fuzet.getCellByPosition(0,2) Cell.Value = 120 SzitWiki - http://szit.hu/
Last update: 2014/12/06 01:52 oktatas:programozás:basic:basic_libreoffice:calc http://szit.hu/doku.php?id=oktatas:programoz%c3%a1s:basic:basic_libreoffice:calc 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