Automatisch uitvoerende macro’s

Door: | 14 mei 2010 10:05

Apps & Software

Een macro dient om bepaalde handelingen te automatiseren. Dit betekent dat ze uitgevoerd worden zonder enige menselijke tussenkomst. Als deze uitvoering vanzelf start bij het openen van het moederdocument, dan beschikt u over de mogelijkheid om de lezer van uw document onmiddellijk onder controle te nemen. En zoiets opent interessante perspectieven.

Open het document in kwestie en activeer de VBA Editor (Alt+F11). Dan ziet u in de Projectverkenner (Ctrl+R) het ThisDocument-object, dat het geopende document voorstelt. Bovenaan het codevenster ziet u twee uitklaplijsten. In het linkse staat (Algemeen), met als enige alternatief Document. In het rechtse is (Declaraties) aanvankelijk de enige optie. Kiest u in de linkse lijst de optie Document, dan wordt de rechterlijst plotseling gevuld met meer dan een dozijn mogelijkheden, en verschijnt automatisch de opening- en slotregel van een subroutine, Document_New genaamd.

Kiezen voor het Document-object binnen het ThisDocument-codevenster, genereert automatisch deze twee regels code.

De meeste opties in de rechtse lijst zijn slechts uiterst zelden bruikbaar. Maar er staan er ook een paar tussen die aardig wat mogelijkheden bieden. Kiest u bijvoorbeeld Open uit de lijst, dan worden opnieuw de twee afbakenende coderegels van een routine gegenereerd, deze keer van Document_Open. Wat daartussen geplaatst wordt, vormt een stukje programmatuur dat uitgevoerd gaat worden telkens iemand het actieve document nog eens opent.

Een interessante toepassing hiervan, is een macro die bij het heropenen van een lang document de cursor terugzet op de positie waar de laatste wijziging gebeurd is. Daartoe volstaat het om één regel code toe te voegen aan de Document_Open routine:

[code]Application.GoBack[/code]

GoBack is een methode, gekend door het Application-object, dat eigenlijk symbool staat voor Word als autonome applicatie. Ze doet hetzelfde als Shift+F5 drukken tijdens het bewerken van een tekst, namelijk: cyclisch schakelen tussen de posities van de laatste drie wijzigingen. Het oogt wat slordig, maar de lege Document_New mag u laten staan: bevindt er zich geen code tussen de Private Sub en de End Sub regels, dan gebeurt er niets.

Eén enkele regel code binnen de Document_Open routine, en de cursor staat terug op de plaats van de laatste wijziging.

Werken met Document_Open heeft één nadeel: het is enkel als dat ene specifieke document geopend wordt, dat er iets gebeurt. Er bestaat nog een andere manier om iets vergelijkbaars te bereiken, maar dan universeler. Voegt u namelijk een macro met de naam AutoOpen toe aan het Normal.dot sjabloon, dan wordt deze procedure uitgevoerd wanneer een willekeurig document geopend wordt. En Word reageert ook op de routines AutoNew, AutoClose, AutoExec en AutoExit.

Werkt op: Word 2007 & Word 2003