Word - Stichwortverzeichnis mit Hilfe eines Makros erzeugen

Stichwortverzeichnis mit Hilfe eines Makros erzeugen

Umfangreiche Texte verfügen normalerweise über ein Stichwortverzeichnis. Word besitzt keine leicht zu bedienende Funktion zum Erstellen eines Stichwortverzeichnisses. Es existiert zwar eine Index-Funktion, die aber für das Anlegen eines klassischen Stichwortverzeichnisses nicht gut geeignet ist.

Eine andere Möglichkeit besteht darin, die einzelnen Wörter dieses Verzeichnisses mit der Suchfunktion aufzuspüren und die entsprechenden Seitenzahlen "zu Fuß" einzutragen. Auch diese Variante ist aber nicht gerade die optimale Lösung. Wesentlich schneller kann man ein Stichwortverzeichnis mit dem abgebildeten Makro erzeugen. Im Menü Extras | Makro | Makros vergeben Sie als Makroname die Bezeichnung Stichwort und Erstellen dieses Makro indem Sie das nebenstehende Listing abtippen.

Nach der Fertigstellung eines Dokuments, zu dem Sie ein Verzeichnis anlegen wollen, muss man zuerst drei Textmarken definieren. Normalerweise werden nur die Wörter eines Textes in das Stichwortverzeichnis aufgenommen, die sich im Hauptteil des Dokuments befinden. Vorwort, Inhaltsverzeichnis und Anhang werden dabei nicht berücksichtigt.

Um dem Makro mitzuteilen, wo denn nun der Hauptteil beginnt und wo er endet, muss man die erwähnten Textmarken festlegen. Vor dem ersten Wort des Hauptteils fügen Sie die Textmarke Startseite ein, nach dem letzten relevanten Wort die Textmarke Endeseite. Schließlich definieren Sie noch an der Stelle, an der das Verzeichnis angelegt werden soll die Textmarke Stichwortverzeichnis.

Um ein Wort in das Stichwortverzeichnis aufzunehmen, markieren Sie es und starten dann das Makro. Das Makro durchforstet nun den Bereich zwischen Startseite und Endeseite nach diesem Wort und erzeugt einen entsprechenden Eintrag im Stichwortverzeichnis. Schließlich springt das Makro wieder an die Stelle des Textes zurück, an der es aufgerufen wurde.

Das Makro erkennt auch aufeinanderfolgende Seiten und kennzeichnet die Einträge des Stichwortverzeichnis entsprechend. Befindet sich in einem Dokument z.B. das Wort Erdbeertorte auf den Seiten 2, 6, 7, 11, 17, 18 und 19 so erscheint im Stichwortverzeichnis der Eintrag Erdbeertorte 2, 6f, 11, 17ff. So erzeugen Sie schnell und unkompliziert ein Stichwortverzeichnis, dessen Inhalt Sie nur noch alphabetisch sortieren müssen.

Makro zum Anlegen eines Stichwortverzeichnisses:

Sub Stichwort()
Dim Eintrag As String      ' Eintrag ins Stichwortverzeichnis
Dim Seite(100) As Integer  ' Seiten auf denen sich das Stichwort befindet
Dim StartSeite, EndeSeite  ' Start und Ende des Suchbereichs
Dim i, Nr As Integer       ' Zählvariablen

Eintrag = Selection.Text   ' Stichwort einlesen
ActiveDocument.Bookmarks.Add Range:=Selection.Range, Name:="temp"  ' Mark. merken
Selection.GoTo What:=wdGoToBookmark, Name:="Startseite"            ' zur Startseite gehen

StartSeite = Selection.Information(wdActiveEndPageNumber)    ' Seitennummer einlesen
Selection.GoTo What:=wdGoToBookmark, Name:="Endeseite"       ' zur Endeseite gehen
EndeSeite = Selection.Information(wdActiveEndPageNumber)     ' Endeseite einlesen
Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Name:=StartSeite

With Selection.Find       ' Suchoptionen
  .ClearFormatting        ' Formatierungen nicht beachten
  .Text = Eintrag         ' Suchtext
  .Replacement.Text = ""  ' nicht ersetzen
  .Forward = True         ' Suchrichtung
  .MatchCase = True       ' Groß- und Kleinschreibung beachten
End With

Do
 Selection.Find.Execute
 If Selection.Find.Found = False Then Exit Do   ' Stichwort nicht mehr gefunden
   Nr = Nr + 1
   Seite(Nr) = Selection.Information(wdActiveEndPageNumber) ' Seitennummer speichern
   Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Count:=1, Name:=""
Loop While Seite(Nr) < EndeSeite

If Seite(Nr) > EndeSeite Then   ' Fehler kann auftreten, wenn Suchwort nicht auf EndeSeite
  Seite(Nr) = 0    ' Seiteneintrag löschen
  Nr = Nr - 1      ' Nummer korrigieren
End If

Seite(0) = -1    ' erste Seite immer anzeigen
Eintrag = Eintrag & " "

For i = 1 To Nr
    If Seite(i) - Seite(i - 1) > 1 Then    ' Abstand zweier Seiten größer als 1?
     Eintrag = Eintrag & Seite(i)          ' Seitennummer hinzufügen
    ElseIf (Right(Eintrag, 2) <> "ff") Then   ' "ff” für aufeinanderfolgende Seiten
     Eintrag = Eintrag & "f"    ' "f" für aufeinanderfolgende Seiten hinzufügen
    End If
   If Seite(i + 1) - Seite(i) > 1 Then Eintrag = Eintrag & ", "  ' neue Seitennummer trennen
Next i

If Right(Eintrag, 2) = ", " Then Eintrag = Left(Eintrag, Len(Eintrag) - 2) ' letztes ", " weg
  Selection.GoTo What:=wdGoToBookmark, Name:="Stichwortverzeichnis"
  Selection.TypeParagraph            ' Zeilenvorschub
  Selection.TypeText Text:=Eintrag   ' Eintrag ins Stichwortverzeichnis schreiben
  Selection.GoTo What:=wdGoToBookmark, Name:="temp"   ' zum markierten Text zurück
  ActiveDocument.Bookmarks("temp").Delete             ' Markierung löschen
End Sub 

Mehr Tipps: Word - Einfügetaste deaktivieren

Sponsoren und Investoren

Sponsoren und Investoren sind jederzeit herzlich willkommen!
Wenn Sie die Information(en) auf dieser Seite interessant fanden, freuen wir uns über eine kleine Spende. Empfehlen Sie uns bitte auch in Ihren Netzwerken (z. B. Twitter, Facebook oder Google+). Herzlichen Dank!

Nach oben Sitemap
Impressum & Kontakt