Makrók használata az Excelben biztonságos jelszavak generálása
- Makróhibák
kezelése,
Makróhibák kezelése A Visual Basic szerkesztőablakában szerkesztés közben elindított futtatással ellenőrizhetjük a makró szintaxisát. Ez a szabályos nevek, hivatkozások alkalmazását ellenőrzi és a makrószerkesztőből mindaddig nem tudunk kilépni, amíg a hiba fennáll (lásd a következő ábrát). Ha a hibát nem tudjuk kijavítani (bővebben utána akarunk nézni a problémának), akkor átmenetileg tegyük megjegyzéssé a sort, azaz írjunk a sor elejére aposztróf (’) karaktert. Az ilyen sorokat (pontosabban az ilyen karakterek utáni részt) nem fordítja le a program. Ha később ismét fordíttatni akarunk egy ilyen sort, akkor töröljük az aposztróf (’) karaktert. A futás közbeni hibákat szintaktikailag helyes makrók esetén a rossz hivatkozások, illetve nem megfelelő kiindulási adatok okozzák. A makró futtatása során talált összetettebb hibák általában a megadott metódus használhatóságával kapcsolatosak. Lehet, hogy az adott objektumon nem alkalmazható a megadott metódus a következő okok valamelyike miatt: Valamelyik argumentum érvénytelen értéket tartalmaz, nem létező objektumra hivatkozik, például a Workbooks(5) függvényhívást használjuk, amikor csak három munkafüzet van megnyitva. A metódus az adott környezetben nem használható. Bizonyos Range objektumoknál például követelmény az, hogy a tartomány adatokat tartalmazzon. Ha a tartomány ilyen esetekben nem tartalmaz adatot, akkor a metódus hibát jelez.
Hibajelzés a VB szerkesztőben Külső hiba történt, például a fájl írásakor vagy olvasásakor.
Feladat: Biztonságos jelszavak generálása Készítsünk olyan makrót, amely a kijelölt cellákat biztonságos jelszavakkal tölti fel. Biztonságosnak tekinthető a jelszó akkor, ha legalább 8 karakter hosszú, tartalmaz kisbetűt, nagybetűt, számot, írásjeleket. A makrót helyezzük el a gyorselérési eszköztárban. Megoldás 1. Adjuk ki a Fejlesztőeszközök szalag Visual Basic parancsát! 2. A Project ablakban válasszuk ki a szerkesztett munkafüzetünket, majd adjuk ki az Insert menü Module parancsát, vagy kattintsunk a jobb egérgombbal a Project ablakban a projekt (munkafüzetünk) nevére, és adjuk ki a helyi menü Insert menü Module parancsát! 3. Rögzítsük a modul ablakban a következő eljárást: Sub jelszavak() Randomize hossz = 8 'A felhasználható karakterek sorozata az angol-magyar ‘billentyűzetváltás miatt összetéveszthető karakterek (y Y z Z) ’nélkül: karakterek ="qwertuoipasdfghjklxcvbnm0123456789 QWERTUIOPASDFGHJKLXCVBNM,.-!%=(?)@&_*+<>{}[]/\$#" For Each cella In Selection.Cells Do Do jelszó = Mid(karakterek, Int(Rnd * Len(karakterek)) + 1, 1) Loop While jelszó = "=" For x = 2 To hossz jelszó = jelszó & Mid(karakterek, Int(Rnd * Len(karakterek)) + 1, 1) Next DoEvents Loop Until Biztonságos(jelszó) cella.Value = jelszó Next End Sub 4. Zárjuk be a Visual Basic szerkesztőablakát! 5. Adjuk ki a Fájl/Beállítások parancsot (ugyanennek felel meg a gyorselérési eszköztár helyi menüjének Gyorselérési eszköztár testreszabása, illetve További parancsok parancsa is)!
A gyorselérési eszköztár és helyi menüje 6. Válasszuk a kategóriák közül a Gyorselérési eszköztár testreszabása elemet, majd a Választható parancsok helye listában a Makrók elemet! 7. A makrók listájából válasszuk ki a jelszavak makrót és kattintsunk a Felvétel gombra! 8. A panelen a gyorselérési eszköztár ikonjai közül válasszuk ki a jelszavak makrót, utána kattintsunk a Módosítás gombra! 9. A Gomb módosítása párbeszédpanelen válasszunk ikont, és nevezzük el a gombot Jelszógenerálás néven! 10. Az OK gombbal zárjuk be a Gomb módosítása, majd Az Excel beállításai párbeszédpanelt is!
A makró gombot elhelyezzük az eszköztárban 11. Próbáljuk ki a jelszógenerálást: jelöljük ki a D4:G4 tartományt, majd adjuk ki az Eszközök menü Jelszógenerálás parancsát!
A generált biztonságos jelszavak
Feladat: Biztonságos jelszavak generálása, adatbekérés párbeszédpanelen Készítsünk olyan makrót, amely a kijelölt hosszúságú biztonságos jelszavakkal tölti fel.
cellákat
párbeszédpanelen
megadott
Megoldás Az előző eljárás egyszerűen továbbfejleszthető, hogy párbeszédpanelen bekért hosszúságú jelszót generáljon: 1. Nyissuk meg a Visual Basic szerkesztőablakot! 2. Módosítsuk a jelszavak() eljárást! A hossz = 8 sor helyére írjuk a következő kódot: hossz = InputBox("Hány karakter hosszú legyen (8-20)?", "Jelszóhossz", 8) ' ha nem a jó értéket adtunk meg: hossz = 8 If hossz < 8 Or hossz > 20 Then hossz = 8 End If 3. Próbáljuk ki a megoldást, vagyis kattintsunk a gyorselérési eszköztárba felvett Jelszógenerálás ikonra! Ekkor a mellékelt ábra szerinti párbeszédpanelen kell megadnunk a jelszó hosszát.
Az itt megadott hosszra generáljuk a jelszót
Feladat: Bővítmény készítése Készítsünk a jelszavak() eljárásból bővítményt, hogy bármely új üres munkafüzethez elérhető legyen! Megoldás 1. Készítsünk biztonsági mentést munkafüzetünkről! 2. Töröljük ki az összes munkalapot, hogy csak egyetlen üres munkalap maradjon! 3. Mentsük el az üres (valójában a biztonságos függvényt és a jelszavak eljárást modullapon tartalmazó) munkafüzetet a Fájl/Mentés másként paranccsal úgy, hogy a fájl neve Jelszógenerálás, típusa Excel-bővítmény (*.xlam) legyen! Ez létrehozza a C:\Users\felhasználó\AppData\Roaming\Microsoft\AddIns mappában a Jelszógenerálás.xlam állományt, mely lehetővé teszi a makrók futtatását. Ha a korábbi változatok számára mentenénk a bővítményt, akkor az Excel 97-2003bővítmény (*.xla) típust válasszuk! 4. Zárjuk be a munkafüzetet! 5. Nyissunk egy új munkafüzetet! 6. Kattintsunk a Fájl szalagfülre, és adjuk ki a Beállítások parancsot! 7. Az Excel beállításai párbeszédpanelen válasszuk a Bővítmények lapot! 8. A Kezelés listában válasszuk az Excel bővítmények listaelemet, majd kattintsunk az Ugrás gombra! 9. Keressük meg az új Jelszógenerálás bővítményt a Tallózás gombra kattintva, majd aktiváljuk a jelölőnégyzet bekapcsolásával! 10. Valahogyan most is indítani kell a makrót, ezért a korábbiak szerint kössük ismét egy gyorselérési eszköztárban megjelenő ikonhoz! 11. Próbáljuk ki az eljárást, vagyis most is jelöljünk ki egy területet, majd kattintsunk a Jelszógenerálás ikonra!
Aktiváljuk a bővítményt