2
www.ChF-Online.de  

Wordfenster/-dokumente auflisten

   Neuigkeiten
   API-Aufrufe in VBA
   VBA2HTML
   Word
   Word-VBA
aktiv aktiv Verschiedenes
 Dateiname ohne Endung
 Dokumentstrukturanzeige
 Fenster anordnen
aktiv  Fensterliste
 Fensterliste (II)
 Kalender erstellen
 Kommentarinformationen
 Lesezeichen
 Beliebigen Ordner öffnen
 Position der Einfügemarke
 Seitenanfang/-ende
 Shapes ansprechen
 Sicherheitskopien erstellen
 Word-Startparameter
 Word-Startparameter II
 Startordner "Bild einfügen"
 Tags finden u. bearbeiten
 Tags finden/bearbeiten (II)
 Text2WordArt
 Textbausteine verwenden
 Textmarken (I)
 Textmarken (II)
 Überschrift zu Textmarke
 VBA-Konverter
 Wasserzeichen
 Zeichen tauschen
 Feld-Arbeiten
 Form-Sachen
 Menü-/Symbolleisten
 VBA und Lotus Notes
 VBA und Mail
 Inside VBAIDE
 Von Word nach Outlook
 Fix-und-Fertiges/Projekte
   Word2007 (RibbonX)
   Word2010 (RibbonX)
   Outlook-VBA
   Links zu VB(A)
   DocToHelp
   Netport Express XL
   Astronomie
   Gästebuch
   Volltextsuche
   Sitemap
   Buch:Word-Programmierung
   Impressum & Kontakt
   Datenschutzerklärung
Getestet unter Word2000  
Makro/Datei speichern
Print

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.
Wer mehrere Dokumente geöffnet hat und somit auch mehrere Word-Instanzen sieht, kann auf verschiedene Weisen zwischen den Dokumenten wechseln:

  • über den Menüpunkt "Fenster",
  • mit dem Tastenkürzen <Strg><F6>,
  • oder durch Anklicken der Word-Instanz in der Tastleiste

Bei vielen Dokumenten kann es mitunter umständlich sein, das gewünschte Dokument mit einem Klick in den Vordergrund zu holen.
Eine weitere Möglichkeit, alle geöffnenten Dokumente auf einen Blick in jeder Word-Instanz zu sehen, bietet die folgende Lösung. Sie basiert auf verschiedenen Makros, die für jedes Dokument einen eigenen Eintrag in einer Symbolleiste anlegen. Zur Identifizierung werden die Dateinamen verwendet.

Alle Worddokumente auflisten

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.

Menübefehle:
  • DateiNeu (Menübefehl)
  • DateiNeuStandard (Symbol)
  • DateiÖffnen
  • DateiSchlieÓen
  • DateiSpeichernUnter
Auto-Makros:
  • AutoClose
  • AutoExec
  • AutoNew
  • AutoOpen

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.
Über das erste Symbol kann die Liste jederzeit manuell aktualisiert werden, falls das Ereignis, das ein Dokument öffnet, nicht erkannt werden sollte (z.B. häufig bei OLE-Verknüpfungen)

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:
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.

Weiter (Teil II) >>


 Besucher: 2 online  |  79 heute  |  2679 diesen Monat  |  1593928 insgesamt | Seitenaufrufe: 82   Letzte Änderung: 24.06.2006 © 2001-14 Christian Freßdorf
  Hat man das Unmögliche eliminiert, so muß, was übrigbleibt, mag es noch so unwahrscheinlich erscheinen, die Wahrheit sein.
Sherlock Holmes von Sir Arthur Conan Doyle in den Mund gelegt
 powered by phpCMS and PAX