Ansicht der Dokumentstruktur steuern |
|
|||||||||||||||||||||
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. 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 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 MakeSymLeiste
auf. |
www.chf-online.de/vba/vbadokstruktur.htm | © 2001-11 Christian Freßdorf (Zaphod-Systems) |