Pri tvorjenju makrov v predlogah imamo na voljo tri možnosti: zagon makra ob tvorjenju novega dokumenta, temelječega na predlogi, zagon ob odprtju obstoječega dokumenta ali pa zagon ob zaprtju dokumenta. Vse skupaj je pravzaprav dokaj preprosto, saj se načini razlikujejo le po uvodnem ukazu. In kako zadevo izvedemo? Ogledali si bomo preprost primer, pri katerem se bo ob odprtju novega dokumenta pojavilo okence, ki nas bo pozdravilo.
Najprej seveda odpremo predlogo, ki bi ji radi dodali makro. Če ne veste, kje imate predloge, je najbolje, da odprete Raziskovalca, in na disku, kjer imate nameščen Office, poiščete datoteke tipa .dot (Office 2003) ali .dotm (Office 2007 naprej). Ko najdemo ustrezno predlogo (če bi radi zagon makra v vseh novih dokumentih, lahko spremenimo kar predlogo Normal.dot oziroma Normal.dotm). Ko je predloga odprta, s kombinacijo tipk Alt+F11 in odpremo urejevalnik VBA oziroma makrov. V okencu Project Explorer nato poiščemo vnos ThisDocument in odpre se prazno okno makra. V okno nato vpišemo tele vrstice kode:
Private Sub Document_New()
'Pozdravi uporabnika.
MsgBox "Pozdravljen!", vbOKOnly, "Pozdrav"
End Sub
Nato izberemo gumb za shranjevanje in se preselimo nazaj v Word. Če zdaj izberemo Datoteka > Nova, nato pa predlogo, ki smo ji dodali naš makro, se bo ob odprtju pojavilo tudi okence s pozdravom.
_Open() pač uporabimo Private Sub Document_Close().
No, pa si malce oglejmo, kaj smo sploh naredili. Najpomembnejša pri vsem tem je prva vrstica Private Sub Document_New(). V njej je določeno, naj se dejanje izvede ob odprtju novega dokumenta. In ker smo stvar shranili v predlogo, se bo izvedla vedno, ko bomo izbrali nov dokument, temelječ na tej predlogi. Druga vrstica, ki se začne z apostrofom, je le komentar in je pomembna le za to, da vemo, kaj smo z nadaljevanjem hoteli doseči. Pri tako kratkem makru je to morda odveč, pri večjih makrih ali če je teh veliko, pa je takšno komentiranje izredno pomembno. To vam bo zatrdil vsak, ki je kdaj iskal napako v kakšni kodi. Sledi vrstica, v kateri določimo, kako se bo okno imenovalo oziroma kaj bo pisalo v naslovni vrstici ter vsebino. Vse skupaj zaključimo z End Sub in to je vse. Iz zapisanega je torej razvidno, da je makro lahko kakršen koli, le začeti se mora z vrstico Private Sub Document_New() on končati z End Sub.
Na zelo podoben način lahko določimo, kaj naj se izvede ob odprtju ali zaprtju dokumenta. Če bi na primer radi, da se pozdravno okno odpre ob odprtju obstoječega dokumenta, temelječega na predlogi, bo koda makra skoraj identična prejšnji:
Private Sub Document_Open()
'Pozdravi uporabnika.
MsgBox "Pozdravljen!", vbOKOnly, "Pozdrav"
End Sub
Vidimo, da je edina razlika v prvi vrstici, kjer imamo namesto New zdaj Open. Da, pravilno sklepate: ko bi radi, da se makro izvede ob zaprtju dokumenta, namesto Private Sub Document
Moj mikro, april 2011 | Zoran Banovič |