Aktuelle Seite:
/vba/wordfenster.htm
Letzte Änderung: 24.06.2006

Getestet unter Word97Getestet unter Word2000  
Makro/Datei speichern
Print

Während in Word97 alle Dokumtente innerhalb einer Word-Instanz geöffnet wurden, werden diese in Word2000 in eigenen Instanzen geöffnent. Für jede Instanz von Word wird ein eigener Tast angezeigt.
Leider kann dieses Verhalten nicht geändert werden und erst Windows XP erlaubt eine Auswahl dieser Anzeige.

Mit folgendem Makro wird zwar dieses Verhalten in Word2000 nicht geändert, aber es ermöglicht die automatische Anordnung aller geöffneter Dokumente/Fenster. Dabei können alle Fenster entweder vertikal oder horizontal angeordnet werden. Ist nur ein Dokument geöffnet, wird dieses in voller Größe angezeigt.

Zuerst wird die Anzahl der Fenster ermittelt und die verfügbare Bildschirmbreite und -höhe auf die Fensteranzahl verteilt.
Anschließend werden in der Schleife alle Fenster nebeneinander bzw. untereinander angeordnet.
Wenn Ihr dieses Makro auf ein neues Symbol in der Symbolleiste legt, könnt Ihr bei jedem neuen Fenster diese wieder automatisch anordnen lassen.
Bei vielen geöffneten Dokumenten wird allerdings die Fenstergröße schnell zu klein ;-)

Sub Dokumenteanordnen() 
Dim wnd As Word.Window
Dim appHeight As Long, appWidth As Long 
Dim lWindows As Long, appLeft As Long, appTop As Long 
Dim lChildTitleBar As Long 
Dim iAnordnung As Integer
Dim sMsg As String 

ScreenUpdating = False 
'Korrekturfaktor für das erste Fenster 
appLeft = -1
With Application
  'Fenster Info holen 
  Set wnd = .ActiveWindow
  lWindows = .Windows.Count
  ' Prüfen, ob überhaupt Fenster geöffnet sind 
  If (lWindows = 0) Then 
    Exit Sub 
  ElseIf (lWindows = 1) Then 
    wnd.WindowState = wdWindowStateNormal 
    Exit Sub 
  End If 
  sMsg = "Es sind " & lWindows & " Dokumente geöffnet." & vbCrLf 
  sMsg = Msg & "Fenster vertikal anordnen (sonst horizontal)?"
  iAnordnung = MsgBox(Msg, vbYesNo, "Fenster anordnen")
 'Fensterbreite auf zur Verfügung stehende 
 Select Case iAnordnung
 Case 6
 ' Höhe, geteilt durch Anzahl Fenster 
  appHeight = .UsableHeight / lWindows
  appWidth = .UsableWidth
Case 7
 'Breite, geteilt durch Anzahl Fenster 
  appWidth = .UsableWidth / lWindows
  appHeight = .UsableHeight
End Select 
End With 
appTop = 0
appLeft = 0

For Each wnd In Word.Application.Windows
 'Fenstergrösse "Wiederherstellen" 
 'Muss für jedes Fenster in Word2000 
 'ausgeführt werden 
  wnd.WindowState = wdWindowStateMaximize 
  wnd.Width = appWidth
  'Fensterhöhe 
  wnd.Height = appHeight
  'Position links setzen 
  wnd.Left = appLeft
  'Position oben setzen 
  wnd.Top = appTop
  'nächste Position links berechnen 
  '(letzte Position + Fensterbreite 
 Select Case iAnordnung
 Case 6
 ' Höhe, geteilt durch Anzahl Fenster 
  appTop = appTop + appHeight
  appLeft = 0
Case 7
 'Breite, geteilt durch Anzahl Fenster 
  appTop = 0
  appLeft = appLeft + appWidth
End Select 
Next 
ScreenUpdating = True 
End Sub 

Als Erweiterung lässt sich z.B. eine variable Aufteilung implementieren.


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