VBA-Ereignisse in Word programmieren

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Microsoft Word bietet für das Application- und für das Document-Objekt einige sehr interessante Ereignisse an. Diese können wir implementieren und damit auf verschiedene Benutzeraktionen wie das Öffnen, Speichern oder Schließen eines Dokuments oder auch auf andere Aktionen zu reagieren. In diesem Artikel stellen wir die Ereignisse vor und zeigen, wie Du diese implementieren und mit eigenem Code füllen kannst. Damit lernst Du, wie Du auf das Öffnen, Schließen oder Anlegen von Dokumenten reagieren kannst oder wie sich Ereignisse programmieren lassen, die beim Drucken oder Speichern ausgelöst werden. Auch Aktionen wie ein Doppelklick oder ein Rechtsklick auf die Inhalte des Word-Dokuments lassen sich damit steuern. Wie das gelingt, zeigen wir in diesem Artikel.

Voraussetzung: Das WithEvents-Schlüsselwort

Wenn wir Ereignisprozeduren für die Ereignisse einer Word-Instanz implementieren wollen, benötigen wir vor allem eines: Die Deklaration einer Objektvariablen für die Word-Instanz, und zwar mit dem Schlüsselwort WithEvents versehen:

Private WithEvents objWord As Word.Application

Diese Anweisung können wir nur in einem Klassenmodul platzieren, nicht jedoch in einem Standardmodul.

Das Modul ThisDocument des VBA-Projekts eines Word-Dokuments beispielsweise ist jedoch ein Klassenmodul, in dem wir diese Anweisung unterbringen können.

Die Änderung durch das WithEvents-Schlüsselwort ist nicht direkt sichtbar. Wenn wir allerdings auf das linke Auswahlfeld oben im Code-Fenster klicken, sehen wir nun die auf diese Weise deklarierte Variable objWord. Die Auswahl dieses Eintrags legt automatisch eine Prozedur für das Standard-Ereignis dieses Objekts an, in diesem Fall objWord_Quit:

Private Sub objWord_Quit()
End Sub

Danach können wir aus dem rechten Auswahlfeld die übrigen Ereignisse auswählen und so automatisch die entsprechenden Ereignisprozeduren anlegen lassen (siehe Bild 1).

Auswahl der Ereignisse des Application-Objekts

Bild 1: Auswahl der Ereignisse des Application-Objekts

Das ist praktisch, da wir uns so nicht zu merken brauchen, wie die einzelnen Ereignisprozeduren heißen müssen – was vor allem dann hilfreich ist, wenn diese auch noch die Angabe von Parametern erfordern.

Auf diese Weise legen wir gleich noch Ereignisprozeduren für die Ereignisse Document_BeforeClose, Document_BeforePrint, Document_BeforeSave, Document_Change, DocumentOpen, NewDocument und WindowSelectionChange an.

Für diese Ereignisprozeduren legen wir jeweils einen Haltepunkt an, um zu prüfen, ob und wann diese ausgelöst werden (siehe Bild 2).

Einige Ereignisprozeduren mit Haltepunkten

Bild 2: Einige Ereignisprozeduren mit Haltepunkten

Eines können wir jetzt schon sagen: Bevor wir objWord nicht auf die aktuelle Word-Instanz eingestellt haben, wird keines der Ereignisse ausgelöst. Also fügen wir die folgende Prozedur hinzu und rufen sie mit F5 auf:

Private Sub Initialize()
     Set objWord = Application
End Sub

Danach können wir beispielsweise das aktuelle Dokument speichern und lösen damit die Prozedur objWord_BeforeSave aus. Damit können wir bereits kleinere Aufgaben erledigen – welche das sind, schauen wir uns in den folgenden Abschnitten an.

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar