2
www.ChF-Online.de  

Inhaltsverzeichnisse formatieren

   Neuigkeiten
   API-Aufrufe in VBA
   VBA2HTML
   Word
   Word-VBA
 Verschiedenes
aktiv aktiv Feld-Arbeiten
 Felder aktualisieren
 Felder aktualisieren (II)
 Felder aktualisieren (III)
 Feldfunktion darstellen
 Formularfelder (I)
 Formluarfelder formatieren
 Formularfelder kopieren
aktiv  IHV formatieren
 Aktuelle Kalenderwoche
 Formular-QuickInfos
 Verkn. Dateien drucken
 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 Word2000Getestet unter WordXPGetestet unter Word2003Getestet unter Word2007  
Beispiel anzeigen
Makro/Datei speichern
Print

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:

  • Schriftgröße
  • Fett
  • Kursiv
  • Ausgeblendet

Voraussetzung ist dabei, dass die Seitenangabe im IHV verwendet wird; dies wird in dem Beispiel automatisch eingestellt.

Code markieren
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.
Liegen die Eintragszeilend es IHV als Hyperlinks vor, wird zuerst überprüft, wird für jeden Hyperlink überprüft, ob der Absatz mehr als ein Wort hat - und somit kein leerer Absatz ist. Anschließend wird wieder das vorletzte Wort entsprechend formatiert.


 Besucher: 2 online  |  35 heute  |  1631 diesen Monat  |  1601617 insgesamt | Seitenaufrufe: 31   Letzte Änderung: 24.01.2008 © 2001-14 Christian Freßdorf
  Wäre ich ein Mediziner, würde ich allen Patienten Ferien verschreiben, die glauben, ihre Arbeit sei wichtig.
Bertrand Russell, 1872-1970, engl. Philosoph und Mathematiker
 powered by phpCMS and PAX