Wordfenster/-dokumente auflisten |
|
|||||||||||||||||||||||||||
Word 2000 besitzt leider die Angewohnheit für jedes Dokument eine neue Instanz zu öffnen und in der Taskleiste anzuzeigen. Dieses Verhalten lässt sich auch nicht ändern und kann erst in Word XP konfiguriert werden.
Bei vielen Dokumenten kann es mitunter umständlich sein, das gewünschte Dokument mit einem Klick in den Vordergrund zu holen. Damit die Symbolleiste beim Schlieîen oder Öffnen eines Dokumentes aber auch beim Starten und Beenden von Word aktualisiert wird, müssen sämtliche Ereignisse abgefangen werden. Dieses lässt sich mit Hilfe der Auto-Makros und durch Einklinken in die Menübefehle erreichen.
Der folgende Auszug erzeugt für jedes Dokument eine eigene Schaltfläche mit dem Dateinamen in der Symbolleiste FensterListe. Als Aktion (.OnAction) wird das Makro ShowWindow verwendet, das das Dokument in den Vordergrund holt. Sub MakeButton(Optional Parameter As String) Set cbFensterListe = CommandBars("FensterListe") cbFensterListe.Visible = True MakeButtonAktualisieren 'Schaltfläche erzeugen iCtrlCount = cbFensterListe.Controls.Count ' Anzahl Controls iWindowCount = Application.Windows.Count ' Anzahl Dokumente If ((iWindowCount + 1) <> iCtrlCount) Then Leisteeinblenden If Parameter = "close" Then sWindowCaption = Application.ActiveWindow.Caption End If iCtrlCount = cbFensterListe.Controls.Count For j = iCtrlCount To 1 Step -1 sCtrlName = CommandBars("FensterListe").Controls.Item(j).Caption If sCtrlName = "" Or sCtrlName <> "Aktualisieren" Then CommandBars("FensterListe").Controls(sCtrlName).Delete If iCtrlCount = 1 And sCtrlName = "Aktualisieren" Then Exit For End If Next j For i = 1 To iWindowCount sWindowCaption = Application.ActiveWindow.Caption sWindowName = Application.Windows.Item(i) If Not (Parameter = "close" And sWindowName = sWindowCaption) Then Set ctrlName = cbFensterListe.Controls.Add(Type:=msoControlButton, _ Temporary:=True) With ctrlName .Caption = sWindowName .Style = msoButtonCaption .OnAction = "ShowWindow" .BeginGroup = True End With End If Next i ende: End Sub Die weiteren Makros erzeugen die Symbolleiste, sofern sie noch nicht angelegt wurde, legen die Schaltfläche zum Aktualisieren an, blenden die Symbolleiste ein und fangen die Ereignisse und Menübefehle ab. Das vollständige Modul mit allen Makros befindet sich in der Download-Datei. Hinweis: |
www.chf-online.de/vba/vbafensterliste.htm | © 2001-11 Christian Freßdorf (Zaphod-Systems) |