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

Getestet unter Word2000Getestet unter WordXPGetestet unter Word2003  
Beispiel anzeigen
Makro/Datei speichern
Print

Word bietet zur schnelleren Navigation zwischen den Überschriften im Dokument die Dokumentstruktur an. Ist diese eingeblendet, zeigt sie alle im Dokument enthaltenen Überschriften an. Über das Kontextmenü dieser Einträge kann die Anzeige der Überschriften gesteuert werden. indem die Überschriftstruktur auf- bzw. zugeklappt wird und somit die sichtbaren Einträge auf die ausgewählten Ebenen reduziert bzw. erweitert.
Die Formatierung der Dokumentstrukureinträge erfolgt über den Formatvorlagenkatalog.

In diesem Beispiel wird gezeigt, wie sich aus VBA diese Anzeige ansteuern und ändern lässt.

Das Setzen der aufgelappten Überschriften erfolgt über die .ShowHeading-Eigenschaft der Fensteransicht (View-Objekt), indem die anzuzeigenden Ebene als Parameter angegeben wird:

oView.ShowHeading (iLevel)

Die folgende Prozedur wertet eine Auswahlliste mit den Ebenen aus, blendet die Dokumentstruktur ein und setzt die Ansicht der Dokumentstruktur auf die in der Auswahlliste ausgewählte Ebene.

Sub ManageDisplayDocStructure()  
Dim oDoc As Document, oView As View
Dim iLevel  As Integer 
' Auswahl auswerten  
iLevel = CommandBars("DocStructure").Controls("DocLevel").ListIndex - 1
If iLevel = 0 Then Exit Sub 
Set oDoc = ActiveDocument
' Dokumentstruktur einblenden  
ActiveWindow.DocumentMap = True 
Set oView = oDoc.Windows(1).View
oView = wdPrintView
' Dokumentstruktur anpassen  
oView.ShowHeading (iLevel)
Set oView = Nothing 
Set oDoc = Nothing 
End Sub 

Die Symbolleiste mit der Auswahlliste wird in nachstehender Prozedur erzeugt. Zuerst wird geprüft, ob die Symbolleiste bereits existiert und ggf. angelegt; anschließend wird die Auswahlliste mit den Einträgen angelegt. Damit die Auswahlliste auch auf die Auswahl reagieren kann, wird das Makro Link ManageDisplayDocStructure der .OnAction-Eigenschaft zugewiesen.

Sub MakeSymLeiste()  
Dim cbar As CommandBar  
Dim ctl As CommandBarComboBox  
On Error Resume Next  
' Symbolleiste identifizieren/anlegen  
Set cbar = CommandBars("DocStructure")  
If cbar Is Nothing Then  
  Set cbar = CommandBars.Add("DocStructure", , , True)  
End If  
' ComboBox identifizieren/anlegen  
Set ctl = cbar.FindControl(msoControlComboBox, 1, "DocLevel", True)  
If ctl Is Nothing Then  
  Set ctl = cbar.Controls.Add(Type:=msoControlComboBox)  
End If  
' Einträge festlegen  
With ctl  
  .Tag = "DocLevel"  
  .Caption = "DocLevel"  
  .Clear  
  .AddItem "Ebenen einblenden"  
  .AddItem "Ebene 1"  
  .AddItem "Ebene 2"  
  .AddItem "Ebene 3"  
  .AddItem "Ebene 4"  
  .AddItem "Ebene 5"  
  .AddItem "Ebene 6"  
  .AddItem "Ebene 7"  
  .AddItem "Ebene 8"  
  .AddItem "Ebene 9"  
  .Visible = True  
  .Width = 115  
  .ListIndex = 1  
  ' Makro zuweisen  
  .OnAction = "ManageDisplayDocStructure"  
End With  
On Error GoTo 0  
cbar.Visible = True  
' Aufräumen  
Set ctl = Nothing  
Set cbar = Nothing  
End Sub 

Zum Verwenden des Beispiels importiert das Modul in die gewünschte Dokumentvorlage und ruft die Prozedur Link MakeSymLeiste auf.
Anschließend sollte die Symbolleiste mit der Auswahlliste angezeigt werden.
 


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