Inhaltsverzeichnisse formatieren |
|
|||||||||||||||||||||
Bekanntermaßen lassen sich in einem Dokument mehrere Inhaltsverzeichnisse (IHV) einfügen, indem z.B. unerschiedliche, spezielle Formatvorlagen für ein jedes IHV angegeben werden. Auch kann ein IHV nur für einen Textmarkenbereich erstellt werden. Die Inhaltsverzeichnisseinträge selbst lassen sich durch Anpassen der Formatvorlagen Verzeichnis 1-Verzeichnis 9 an eigene Vorstellungen ändern. Allerdings betrifft dies immer die gesamte Zeile. Ein Ändern z.B. nur der Seitenzahl ist auf diesem Weg nicht möglich. Dieses Beispiel zeigt nun ein paar Möglichkeiten auf, wie man unterschiedliche IHV individuell ansprechen und formatieren kann. So lässt sich für das erste IHV z.B. die Seitenzahl einheitlich fett formatieren, auch wenn der Eintragstext nicht-fett in der Formatvorlage eingestellt ist. Und bei einem zweiten IHV lassen sich die Seitenzahlen ausblenden, wenn z.B. im Ausdruck noch zusätzliche Seiten dazwischengeheftet werden sollen. Mit diesem vorliegenden Beispiel lassen sich nun für jedes IHV eines Dokumentes die Seitenzahlen folgendermaßen formatieren:
Voraussetzung ist dabei, dass die Seitenangabe im IHV verwendet wird; dies wird in dem Beispiel automatisch eingestellt. Function formatTOC(oDoc As Document, _ iTOC As Integer, _ bBold As Boolean, _ bItalic As Boolean, _ bHidden As Boolean, _ lngFont As Integer) ' Funktion zum Formatieren des IHV Dim oHyp As Hyperlink Dim oPara As Paragraph Dim rng As Range, rngt As Range Dim iCount As Integer Dim oToc As TableOfContents Const c_Titel As String = "TOC auswählen" Set oDoc = ActiveDocument If oDoc.TablesOfContents.Count = 0 Then MsgBox "Kein Inhaltsverzeichnis vorhanden!", vbInformation, c_Titel Exit Function Else Set oToc = ActiveDocument.TablesOfContents(iTOC) End If ' IHV mit Seitenzahlen rechts versehen With oToc .IncludePageNumbers = True .RightAlignPageNumbers = True .Update End With ' Verzeichniseinträge als Hyperlink? If oToc.Range.Hyperlinks.Count = 0 Then ' Alle Absätze durchlaufen For Each oPara In oToc.Range.Paragraphs iCount = oPara.Range.Words.Count If iCount > 1 Then oPara.Range.Words(iCount - 1).Font.Bold = bBold oPara.Range.Words(iCount - 1).Font.Italic = bItalic oPara.Range.Words(iCount - 1).Font.Hidden = bHidden If lngFont > 0 Then oPara.Range.Words(iCount - 1).Font.Size = lngFont End If End If Next oPara Else ' Alle Hyperlinks durchlaufen For Each oHyp In oToc.Range.Hyperlinks For Each oPara In oHyp.Range.Paragraphs iCount = oPara.Range.Words.Count If iCount > 1 Then oPara.Range.Words(iCount - 1).Font.Bold = bBold oPara.Range.Words(iCount - 1).Font.Italic = bItalic oPara.Range.Words(iCount - 1).Font.Hidden = bHidden If lngFont > 0 Then oPara.Range.Words(iCount - 1).Font.Size = lngFont End If End If Next oPara Next oHyp End If End Function Um die Seitenangaben eines IHV bearbeiten zu können, wird für jede Eintragszeile das vorletzte Wort ermittelt und entsprechend der Vorgaben formatiert (fett, kursiv, ausgeblendet, Schriftgröße). Es muss das vorletzte Wort sein, da das letzte Wort das Absatzzeichen des Eintrags darstellt. |
www.chf-online.de/vba/vbatoc.htm | © 2001-11 Christian Freßdorf (Zaphod-Systems) |