Aktuelle Seite:
/vba/vbafensterliste2.htm
Letzte Änderung: 15.11.2007

Getestet unter Word2000  
Makro/Datei speichern
Print

Als Erweiterung zu der unter  Fensterliste gezeigten Möglichkeit, die geöffneten Dokumente im besseren Zugriff zu behalten, lassen sich die Wechsel zwischen den Dokumente auch mittels eines Klassenmoduls abfangen. Dazu stehen die Ereignisse WindowActivate, WindowDeactivate und NewDocument im Application-Objekt zur Verfügung. Diese Ereignisse werden automatisch beim Erstellen eines neuen Dokumentes, bzw. beim Aktivieren und Deaktivieren eines Dokumentes (Fensters) ausgeführt.

Mit folgendem Klassenmodul EventClassWindow wird dabei der Wechsel zwischen den Dokumenten abgefangen. Wird ein Dokument aktiviert (z.B. über die Programmleiste oder <ALT><TAB>), wird automatisch der entsprechende Eintrag in der Symbolleiste deaktiviert und der Eintrag für das vorher aktive Dokument wieder aktiviert.

Fensterliste

Public WithEvents App As Application

Private Sub App_NewDocument(ByVal Doc As Document) sCtrlCaption = Doc CommandBars("FensterListe").Controls(sCtrlCaption).Enabled = False End Sub
Private Sub App_WindowActivate(ByVal Doc As Document, ByVal Wn As Window) MakeButton sCtrlCaption = Doc Documents(sCtrlCaption).Activate CommandBars("FensterListe").Controls(sCtrlCaption).Enabled = False End Sub
Private Sub App_WindowDeactivate(ByVal Doc As Document, ByVal Wn As Window) MakeButton End Sub

Um dieses Klassenmodul einzubinden, muss im Modul folgender Aufruf deklariert und z.B. in die AutoExec eingebunden werden.


Wichtig:
Wenn Ihr Änderungen innerhalb des Klassenmoduls vornehmt und es dann testen wollt, müsst Ihr erst wieder das Klassenmodul neu registrieren, damit die Änderungen auch bekannt werden.

Das vollständige Modul inkl. Klassenmodul befindet sich in der Download-Datei.

Hinweis:
Obwohl ich versucht habe, alle Ereignisse abzufangen, kann es trotzdem vorkommen, dass die Fensterliste nicht aktualisiert wird. Normalerweise lässt sie sich dann über die erste Schaltfläche aktualisieren. Für Hinweise auf fehlende Ereignisse (am besten mit Lösungen) wäre ich dankbar.

<< Zurück (Teil I)


 www.chf-online.de/vba/vbafensterliste2.htm © 2001-11 Christian Freßdorf (Zaphod-Systems)