Excel jellemzése, architektúra modellje. Excel architektúra:

Hasonló dokumentumok
SZÁMÍTÓGÉPES PROBLÉMAMEGOLDÁS

Utasítások. Excel VII. Visual Basic programozás alapok. A Visual Basic-kel megoldható feladatok típusai Objektumok, változók Alprogramok

munkafüzet open eseményéhez

LOGISZTIKAI ADATBÁZIS RENDSZEREK EXCEL ALAPOK

SEGÉDLET ADATKEZELÉS MS EXCEL-BEN. Tároljuk az adatokat Excel munkalapon. Megjegyzés: A feladatokat MS Office Excel ban oldottuk meg.

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:

Makrók használata az Excelben - Makróhibák kezelése, biztonságos jelszavak generálása

Tipp A Word makrók kimerítõ tárgyalását megtalálhatjuk az O Reilly gondozásában megjelent Writing Word Macros címû könyvben.

Excel VI. Haladó ismeretek. Makrók készítése Visual Basic nyelven Egyszerű Visual Basic program

Microsoft Excel 2010

Készítsünk programot amelyik valóban a munkalapon felhasznált

PHP-MySQL. Adatbázisok gyakorlat

Táblázatkezelés (Excel)

A Microsoft OFFICE. EXCEL táblázatkezelő. program alapjai as verzió használatával

Műveletek makrókkal. Makró futtatása párbeszédpanelről. A Színezés makró futtatása a Makró párbeszédpanelről

Kiegészítő előadás. Vizsgabemutató VBA. Dr. Kallós Gábor, Fehérvári Arnold, Pusztai Pál Krankovits Melinda. Széchenyi István Egyetem

Excel III. Haladó ismeretek

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

Számítástechnika labor feladatok a 2012/2013. tanév őszi félévében

7. Előadás. Makrók alkalmazása. Salamon Júlia. Előadás I. éves mérnök hallgatók számára

7. fejezet: Mutatók és tömbök

Leírásukat lásd az egyes pontokban

Bártfai Barnabás. Office 2010

Algoritmusok Tervezése. 5. Előadás Visual Basic 2. Dr. Bécsi Tamás

Programozási nyelvek Java

Excel nyilvántartórendszer készítése. 4. gyakorlat - 5. gyakorlat Készítette: Debreceni Bálint

Táblázatkezelés 5. - Függvények

Egyszerű példaprogramok gyakorláshoz

SZÁMÍTÓGÉPES PROBLÉMAMEGOLDÁS

Cellák. Sorok számozás Oszlop betű Cellák jelölése C5

Az MS Excel táblázatkezelés modul részletes tematika listája

Nyugat-magyarországi Egyetem Geoinformatikai Kara. Nagy Gábor. Informatika 16. INF16 modul. Az OpenOffice.org

ADATBÁZISKEZELÉS ADATBÁZIS

Osztályok. 4. gyakorlat

Informatikai alapismeretek Földtudományi BSC számára

SZÁMÍTÁSOK A TÁBLÁZATBAN

Python tanfolyam Python bevezető I. rész

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

Adatbázis rendszerek I

C++ programozási nyelv

Bevezetés a Python programozási nyelvbe

Excel ODBC-ADO API. Tevékenységpontok: - DBMS telepítés. - ODBC driver telepítése. - DSN létrehozatala. -Excel-ben ADO bevonása

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

Útmutató a bevallás Excel táblázatban történő kitöltéséhez

dr.xlsx A programról Szövegműveletekhez használható függvények

BASH script programozás II. Vezérlési szerkezetek

ELTE SAP Excellence Center Oktatóanyag 1

Adatbázis rendszerek. dr. Siki Zoltán

Adatbázisok I Adatmodellek komponensei. Adatbázis modellek típusai. Adatbázisrendszer-specifikus tervezés

Option Explicit Option Base 1

AWK programozás, minták, vezérlési szerkezetek

C++ programozási nyelv

Táblázatkezelés Excel XP-vel. Tanmenet

EuroOffice kiterjesztések: Új funkciók, testre szabott megoldások oktatási, közigazgatási és vállalati felhasználók számára

OOP #14 (referencia-elv)

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 6.ELŐADÁS. Fájlkezelés PHP-ben

Infokommunikáció (PF10IK511L) kérdései

Algoritmusok Tervezése. 4. Előadás Visual Basic 1. Dr. Bécsi Tamás

Használati utasítás.

Excel. Nem összefügg tartomány kijelölése: miután a tartomány els részét kijelöltük, lenyomjuk és nyomva tartjuk a CTRL gombot.

Táblázatkezelés Excel XP-vel. Tanmenet

Feltételes formázás az Excelben

Már megismert fogalmak áttekintése


A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

C programozási nyelv Pointerek, tömbök, pointer aritmetika

Adatbázisok II. rész

OE-NIK 2010/11 ősz OE-NIK ősz

Java programozási nyelv 5. rész Osztályok III.

12 48 b Oldjuk meg az Egyenlet munkalapon a következő egyenletrendszert az inverz mátrixos módszer segítségével! Lépések:

5. Gyakorlat. 5.1 Hálós adatbázis modell műveleti része. NDQL, hálós lekérdező nyelv:

A Java EE 5 plattform

AWK programozás Bevezetés

CSORDÁS JÁNOS: ALAPFÜGGVÉNYEK MICROSOFT OFFICE EXCEL-BEN BUDAPEST, DECEMBER 31. Alapfüggvények a Microsoft Office Excel-ben

Java Programozás 1. Gy: Java alapok. Ismétlés ++

Adatbázis-kezelő rendszerek. dr. Siki Zoltán

A programozás alapjai 1 Rekurzió

M/74. közismereti informatika írásbeli (teszt) érettségi vizsgához

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor.

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés. Szekvenciális fájlkezelés Fájlok használata

számított mező, számított tétel

A C# programozási nyelv alapjai

2 Excel 2016 zsebkönyv

Relációs modell és relációs algebra. ER konvertáása reációs modellre,példák relációs algebrára Személetes ismertetés

3. Osztályok II. Programozás II

Excel tanfolyam középhaladóknak. Az Excel középhaladóknak tanfolyam tematikája

LibreOffice makrók. PCLinuxOS Magazine augusztus. Írta: zerocool

TestLine - balla tesztje-03 Minta feladatsor

Szathmáry László Debreceni Egyetem Informatikai Kar

Egyéni párbeszédpanel Excelben

Basic LibrOffice Calc

Alkalmazott modul: Programozás 4. előadás. Procedurális programozás: iteratív és rekurzív alprogramok. Alprogramok. Alprogramok.

1. Jelölje meg az összes igaz állítást a következők közül!

Hasonlóságelemzés COCO használatával

Objektum Orientált Szoftverfejlesztés (jegyzet)

Optimumkeresés számítógépen

4. modul - Táblázatkezelés

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Adatmodellek komponensei

Átírás:

Excel jellemzése, architektúra modellje Excel architektúra: A modellre a következőképp gondolhatunk: a szerkezet középpontja egy Excel motor. Ez különböző szolgáltatásokat biztosít, tehát gondolhatunk rá, hogy benne megírtak mindenféle hasznos dolgot, és ezt nyújtja nekünk, vagy esetleg segédeszközként is tud funkcionálni más alkalmazásoknak. Nézzük mikből áll ez: munkalap(worksheet): ezeken tárolódnak adataink cellákba szerveződve. függvények: a munkalapon a feldolgozást előre megírt függvények segítik. grafikonok, rajzelemek: adatok, összefüggések szemléltetésére Excel API : ez arra jó, hogy külső alkalmazás tudja az Excel elemeit programozni. Ez OLE DB provider segítségével történik (tehát C#-ból tudunk Excelbe machinálni, munkalapot kezelni, függvényeket ott végrehajtani stb..) C#-ból tehát hogy programozzuk, kell egy OLE DB provider for Excel és akkor az Excel API elemeit, hívásait használhatjuk C#-ból. VBA program futtató: írhatunk további makrókat az excelhez. Így megoldhatóak olyan problémák, mint esetleg DBMS felé lekérdezések küldése Excelből, e-mail küldése excelből, fájlkezelés (tehát akár írhatunk/olvashatunk fájlból, törülhetünk fájlt a fáljrendszeren stb.) stb.. a motorhoz lehet bővítményeket letölteni, csomagok, Pl. Solver Excel jellemzése: Előnyei: egyszerű, általános, sok funkció van benne Hátrányai: nehezebben, veszélyesebben programozható mint pl. egy DBMS. Gondoljunk bele, ha VBA makró kitörölhet fájlokat a gépről és használhat minden windows api elemet.. => makróvírusok Interpreteres a nyelv a VBA. (azaz ha találkozik egy változó névvel és nem létezett még (nincs deklarálva), akkor a jobb oldali érték alapján előállítja. Ha létezik, de más típusú értéket adunk, akkor egyszerűen csak a típust változtatja.). Erről írtam másik kidolgozásba is, hogy ez miért

drága ->option explicit stb.. Ebből eredően egy jellegzetes hiba: szum=0 For i=1 To 100 sum=sum +100 Next If szum<>50 Then.. End If A hiba hogy nem vettük észre hogy összegzéskor elírtuk a változót, de semmi hibajelzést nem kapunk róla, megy minden a maga módján alatta. Excel nem konkurrens elérésű (azaz 100 klienst egyszerre nem nagyon tud kiszolgálni)=>egyfelhasználós rendszerről beszélünk Kisebb adatmennyiség tárolására célszerű használni egyszerűbb kapcsolat rendszer jellemzi (DBMS-be látható, ott kicsit tágabbak a kapcsolat lehetőségek) nem perzisztens szerver VBA egyébként egy dinamikus nyelv: ez azt jelenti hogy egyik sor (utasítás) állítja elő a következő sorra. Azaz a program önmagát határozza meg. Ez ellenőrzés szempontjából viszont nem jó, tehát hátrány ez is.

Excel adatmodell Ha DBMS-eknél nézzük, az adatmodell tartalmaz strukturális részt, műveleti részt és integritási részt. Excelnél első körben megnézzük, milyen tárolási egységekkel dolgozik (mondhatni ezt struktúrának). Fontos, hogy programozási szemszögből (tehát ha VBA megközelítésből nézem) akkor ezek a tárolási egységek is objektumként kezelhetők. A tárolási egységek egyfajta hiearchiát alkotnak, ezt érdemes megnézni és akkor itt megnézzük. A hierachiában a csúcstól kiindulva részletezzük ezeket: 1.) Application objektum: ez maga az Excel. További objektumokat tartalmaz ez az objektum, amelyek közül néhány tárolási egységnek is megfelel: Workbook : ezek voltaképp az xls vagy xlsx fájlok akár. Ez nyílván az alkalmazás objektumhoz tartozik. Ez egy tárolási egység, munkalapok (Worksheet) tárol, amelyek az Excel további tárolási egységei WorksheetFunction: ezek az Excel függvényeket tartalmazzák (Min, Max, CountIf (~darabteli), Count (~darab)), ha VBA-ban ezeket használni szeretnénk, ezen objektumon keresztül tudjuk elérni 2.) Az Application minden objektuma további objektumot tartalmaz Nézzük példaként a Workbook objektumot: Chart: ez a diagram munkalap, VBa-ban így tudnánk rá hivatkozni, Excelben nyílván csak kiválasszuk a munkalapok közül Name: ez a munkafüzet neve, azt adná vissza. Worksheet: munkalapokat tartalmazó objektum. A munkalap további tárolási egység. 3.) Workbook objektumai is további objektumokat tartalmaznak. Nézzük a Worksheet-et: Name: munkalap neve Range: ez további tárolási egység, a munkalap celláinak részhalmazát tartalmazhatja, meg kell neki adnunk, melyeket. Itt érdemes megemlíteni, hogy a tárolási egységek közül a legkisebbeket a Range objektum tartalmazza. A cella egy

egyelemű Range objektumnak felel meg. (tehát a tárolási egységek közül a Range a legkisebb, ennek lehet egy eleme is, ekkor tekintünk rá cella-ként). Meadási módjai egy tartománynak: lehet direkten ( A2:C5 ), de akár a tartományoknak egyedi név is adható. VBA szemszögből: Range( A2:C5 ) Range(Cells(sor, oszlop), Cells(sor, oszlop)) azaz előző példa: Range(Cells(2,1), Cells(5, 3)) Programozási logikája: VBA nyelvet használhatjuk, amiről másik tételben már szót említettünk. Így nézzük meg itt, hogy az egyes tárolási egységeket hogyan programozhatjuk. Első lépésként, hogy hogyan érhetjük el az egyes tárolási egységeket. Több út van. Először is minden gyűjteményekbe van rendezve, mert ugye több munkalapunk lehet, fent meg csak egy objektumról volt szó, tehát kellene egy tömb, ami ezeket tárolja. Ezek a tömbök: Workbooks : a megnyitott munkafüzeteket tárolja (tehát megnyitott xls fájlok..) Worksheets: Workbook objektum által tárolt Worksheet objektumok (tehát egy adott munkafüzet munkalapjait ezen tömbön keresztül érhetjük el) Sheets: ugyanaz, mint a Workheets Charts:munkafüzet (Workbook) objektum összes diagrammja VBA-ban akkor nézzük mit hogyan kezelhetünk: Munkafüzetet, munkalapokat ellehet nevükkel vagy indexükkel érni. Worksheets(1), Worksheets( Új munkalap ). Lehet a hiearchia csúcsától kezdeni a hivatkozást: Application.Workbooks( Book1.xlsx ).Worksheets(1).Range( A1 ).Value És akkor a fent említett hiearchiát bejárjuk. De ez elég hosszú el lehet hagyni bizonyos részeit. Worksheets(1).Range( A1 ).Value

De ha a VBA makrókezelőben pl. az Első munkafüzet részben kódolunk akkor: Range( A1 ).Value Tehát általában a legkisebb tárolási egységet szeretnénk elérni, a cellát és annak értékeit felhasználni. Egy dolgot jegyezzünk meg. Objektum szinten a legkisebb tárolási egység a Range! Olyan objektum, hogy Cell nincs.tehát habár cellának hívjuk, a a cella excelben nem más, mint egy Range objektum, amely egy elemet tartalmaz. Érdekességképpen, védelem létezik az Excel-ben is, egy cellát, munkafüzetet stb.. gond nélkül le lehet jelszavazni. Integritási dolgokat nézve felmerül a kérdés, hogy lehet e olyan dolgokat csinálni, mint pl. DBMS-ben, hogy egy cella értékére mondjuk kikötéseket tenni. VBA-val utánozható. Egy példa : Meg szeretnénk szabni, hogy a B oszlopban szám legyen. Ez cellaformázással elérhető, azonban nem elég erős, mert így is beírhatunk szöveget. Tehát ez elég gyenge. De ha VBA ban írunk egy eseménykezelőt, amely a B oszlop módosításait figyeli, ugyanolyan erős ellenőrzést kaphatunk szinte, mint egy DBMS-ben: Példaként: a második oszlopra olyan automatikus ellenőrzést szeretnénk, hogy csak 5 és 15 közötti értékeket írhassunk be és nem számot ne engedjen. Ha nem megengedett dolgot írunk be, akkor írja vissza a régi értéket! Tehát olyasmit akarunk, mint DBMS-ben egy check a mezőkre. A kódunk: Ezt Makróknál mivel a Munka1 nevű munkalapra akarom csak az ellenőrzöt, abba a modulba kell ezt beillesztenem (nyílván lehet más modul is, attól függ

melyik nevű munkalapra kell, vagy esetleg mindegyikre kell-e )

Dim regiertek As Variant Dim programirjabe As Boolean Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 2 Then ertek = Target(1, 1).Value If (((ertek < 5 Or ertek > 15)) And Not programirjabe) Or Not IsNumeric(ertek) Then MsgBox "Csak 1 es 15 kozott lehet és szám lehet" programirjabe = True Target(1, 1) = regiertek End If End If End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) regiertek = Target(1, 1).Value Cells(3, 3).Value = IsNumeric(Target(1, 1).Value) programirjabe = False End Sub Működés: Két eseményt kell felülírni. A régi érték eltárolásáért a Worksheet_SelectionChange esemény lesz a felelős. Hisz mielőtt írnánk egy cellába, tök logikus, hogy kijelöljük (nem foglalkoztunk más esetekkel most). Ha kijelöljük, akkor mindig lementjük a kijelölt cella értékét. Van még egy szerepe az eseménynek: figyeli, hogy ki módosít. A program ha beír a cellába (pl. a VBA kódunk ha visszaírja a régi értéket), az is kivált ilyen eseményt. Ezért meg kell különböztetnünk, ki váltotta ki. Erre azért van szükség, mert ha az oszlopba léteztek korábbi értékek, amik a makrónk megszületése előtt voltak ott, gondot okozhatnak, hisz akkor ha visszaírjuk ugyanazt és nincs a tartományba, ismételten kiváltaná és végtelen ciklus Kiválthatná a problémát az üres cella, de az le van kezelve IsNumeric-al. A check -ért a Worksheet_Change esemény lesz a felelős. Ő figyeli, hogy: az eseményt ki váltja ki (ha program akkor nem kell ellenőrizni, mert feltehetően jót írunk vissza hisz az jó volt), milyen értéket akarunk beírni és ez szám-e. (ha rosszat, akkor a régi-t visszaírjuk).