Adatbázis kapcsolatok kezelése (1. rész)

Aki nagyobb mennyiségű adattal dolgozik, valószínűleg használ valamilyen adatbázist adatainak megfelelő tárolására. Gyakran felmerülő igény, hogy az adatbázisban tárolt adatokkal (azok egy részével) Excelben (vagy más Office alkalmazásban) dolgozzunk tovább: készíthetünk belőle kimutatást, felhasználhatjuk további kalkulációkhoz, modellekhez.
A VBA nyelv az ADO (ActiveX Data Objects) API-n keresztül kiváló lehetőséget biztosít az adatbázisunkkal való kommunikációra. Aki használta már ezt az API-t, tudhatja, hogy odafigyelést igényel a kapcsolatok kezelése, nem elég létrehozni az adatbázis kapcsolatot és lefuttatni a programunkat, hanem a végén minden kapcsolatot zárni is kell: hiába futott le a programunk, a kapcsolatok az adatbázis szemszögéből nyitva maradnak, és bizonyos esetekben ez problémákat generálhat (például zárolhatjuk táblákhoz vagy akár az egész adatbázishoz való hozzáférést). A másik problémakör, amibe belefuthatunk, hogy hiába van a programunk hibátlanul megírva, futásidőben belefuthatunk számtalan hibába, amit az adatbázis kapcsolatunk generál és kezelnünk kellene (például zárolva van a tábla, amit szeretnénk lekérdezni, vagy valaki megváltoztatta a struktúráját, ezért a korábban rendben működő SQL lekérdezésünk most hibát eredményez). Mivel ezek minden adatbázis műveletnél kezelést igényelnek, érdemes lehet ehhez univerzálisan használható osztályokat készíteni, amiket minden projektünkbe beimportálhatunk. Ehhez szeretnék segítséget nyújtani a mostani és következő bejegyzésekben.

(tovább…)
Inspector Gadget

Továbbfejlesztett keresés

Egy táblában, vagy annak egy sorában / oszlopában keresni egy adott értékre – makróval vagy anélkül – alapesetben nem bonyolult művelet, feltéve, hogy egyszerre csak egy értéket keresünk. De mi van, ha a művelet úgy hangzik, hogy “kettő, három vagy több érték bármelyikét keresd“? A való életben gyakran belefuthatunk ehhez hasonló problémába.

(tovább…)

Stock Exchange

Adatok importálása weblapról

Egy pénzügyi területen tevékenykedő szakember gyakran szembesülhet azzal, hogy saját kimutatásainak frissítéséhez rendszeresen adatokat kell beszereznie valamilyen webes felületről: legyen az egy tőzsdeindex, részvényárfolyam, vagy banki-, jegybanki devizaárfolyam. Amennyiben az igényelt adat eleve egy Excel fájlként van a weblapra feltöltve, akkor a megnyitás automatizálása nem bonyolultabb művelet, mintha a fájl a merevlemezünkön lenne. Ennél egy lépéssel bonyolultabb, ha a kívánt adat (tábla) a weblap HTML kódjába van beágyazva – ennek kinyeréséről lesz szó a továbbiakban.

(tovább…)

Computer envelopes cartoon

Hasznos kiegészítő Word körlevélhez

A Word körlevélkészítés funkciójával (az angol nyelvű verzióban Mail Merge) egyszerűen tudunk tömegesen megszemélyesített leveleket létrehozni, vagyis olyan leveleket, amelyeknek bizonyos részei azonosak, bizonyos részei (például cím, megszólítás, számmezők, de akár komplett szöveges bekezdések) pedig levelenként változnak. A Word által így létrehozott körlevél egy, akár több száz vagy több ezer oldalas dokumentum. Ez az output tökéletesen megfelel, ha nyomtatni akarjuk a leveleket; de mi van, ha nekünk levelenként különálló Word vagy Pdf fájlokra van szükségünk? A Word beépített funkciója erre nem kínál megoldást, de egy rutinos makrókészítő nem esik kétségbe, hanem egy kis szkript segítségével áthidalja a hiányosságot.

(tovább…)

Text Art

Szövegfájlok importálása

Egy szöveges állomány – például .txt vagy .csv kiterjesztésű fájl – beimportálása az Excelbe makró nélkül sem egy bonyolult mutatvány. Ha rendszeresen azonos struktúrájú szövegfájlokat kell beimportálnunk, akkor egy rövid programkóddal egyszerűen automatizálhatjuk ezt a tevékenységet. Mindez addig igaz, amíg a szövegfájl struktúrája megegyezik azzal a struktúrával, amit az Excelben látni szeretnénk. Ám ha a szövegfájl nincs jól strukturálva, csak időigényes manuális munkával tudjuk az Excel táblánkat a kívánt formára hozni – itt jön be a makró a képbe, amivel ezt a manuális munkát néhány tizedmásodperces (nagyméretű állományok esetén néhány másodperces) gépi futásidőre cserélhetjük.
(tovább…)

PieChart-Pacman-Pyramid

Grafikonok vezérlése és formázása – 2. rész

Az előző bejegyzésben elkezdtük egy vezérlőpanellel vezérelt grafikon felépítését. A gondolatmenetet ott hagytuk abba, hogy elkészült képzeletbeli esetünkhöz a vezérlőpanel, amin kapcsológombok segítségével ki tudjuk választani, hogy két cég két banknál vezetett bankszámlái közül  melyik számlák látszódjanak a grafikonon, egy dátumválasztó segítségével pedig ki tudjuk választani, hogy mely időszakot jelenítse meg a grafikon. A mai bejegyzésből kiderül, hogy makrók és az előzőekben felépített vezérlők segítségével hogyan tudjuk a grafikont létrehozni, a megfelelő adatokat hozzárendelni, és az alapvető formázásokat megejteni.

(tovább…)

Nuclear control room

Grafikonok vezérlése és formázása – 1. rész

Pénzügyesként elég gyakran előfordul, hogy egy adathalmazt elemzés vagy prezentáció céljából grafikonok segítségével vizualizálunk. Amennyiben a különböző nézetekre, szűrésekre nem szeretnénk külön-külön grafikont létrehozni, kézenfekvő lehet, ha ezek között a nézetek között vezérlőkkel (Control-okkal) tudunk váltani; ha pedig a kívánt grafikon megfelelő megjelenítéséhez segédtáblákra lenne szükség, akkor ezt megspórolhatjuk azzal, ha az adatok leválogatását egy makróra bízzuk.

(tovább…)

Closing the window

Alapvető fájlműveletek – 3. rész: fájlok bezárása … és ami utána van … vagy előtte

Az első bejegyzés-sorozat záró részeként eredetileg a fájlok lezárásáról terveztem írni. Természetesen ez nem marad el, azonban a fájlbezárás önmagában nem egy bonyolult és érdekfeszítő téma. Ellenben vannak műveletek, amiket tipikusan bezárás előtt szoktunk megejteni, így ezekről is szó lesz a mai bejegyzésben. Másrészt az Excel fájlok élete általában nem ér véget azzal, hogy mi bezárjuk őket. Valaki más megnézi, ellenőrzi, dolgozik vele vagy adatokat használ fel belőle; az illetőt mi értesítjük, hogy elkészültünk, esetleg továbbküldjük neki a fájlt. A munkafolyamatok (workflow-k) automatizálása megér egy külön bejegyzést – ha nem többet –, de a fájlok bezárása kapcsán szeretnék felvillantani néhány további érdekességet is.

(tovább…)