Tipps und Tricks rund um Word
Index mit Kapitelnummer und VBA
Ein Index, der sich nicht auf Seitenzahlen, sondern nur auf Kapitelnummern bezieht, kann mit einer Kombination aus XE- und STYLEREF-Feldern erstellt werden. Ohne VBA geht das mit ein bisschen Handarbeit, das ist hier beschrieben. Wer weiter automatisieren möchte, kann das mit ein paar Zeilen VBA tun.
Folgende Situation wird mit dem VBA-Code erfasst:
- Es wird immer die Formatvorlage des Absatzes ermittelt, in dem das XE-Feld steht. Also nicht die Formatvorlage der Überschrift darüber. Das setzt voraus, dass die Absätze mit dem XE-Feld nummeriert sind.
- Der Text "wird zuerst verwendet in Kapitel" wird durch den VBA-Code geschrieben - andere Texte müssen dort hinterlegt werden.
- Pro XE-Feld muss das Makro gestartet werden, weil ja nicht alle XE-Felder als Definitionen erfasst werden.
- Die XE-Felder werden dem Typ "Def" für "Definitionen" zugewiesen. Es muss also später ein Index für "Def" erzeugt werden.
Blenden Sie über "Datei | Optionen | Menüband anpassen" das Register "Entwicklertools" ein. Klicken Sie auf "Entwicklertools | Visual Basic" und schreiben Sie entweder in die "Normal" oder in eine andere Vorlage, die Sie verwenden, den VBA-Code.
- Klicken Sie doppelt auf "Module | New Macro"
- Tippen Sie folgenden Text in das Blatt:
- Sub XEFeld()
' XEFeld ergänzen
Set sSelection = Selection.Style
Selection.TypeText Text:=" \f ""def"" \t ""Zuerst beschrieben in Kapitel "
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, _
PreserveFormatting:=False
Selection.TypeText "styleref " & """" & sSelection & """" & " \n"
End Sub
- Sub XEFeld()
Set sSelection | Die Formatvorlage (Selection.Style) des aktuellen Absatzes wird ermittelt und in sSelection gespeichert |
\f "def" | weist die Kategorie "def" für das XE-Feld zu |
\t | Es folgt der Text "Zuerst beschrieben in Kapitel" (vergessen Sie die Leerschritte nicht vor dem Anführungszeichen |
Selection.Fields... | erstellt ein leeres Feld |
Selection.TypeText | das leere Feld wird mit "styleref" als Feldname und dem Name der aktuellen Formatvorlage (sSelection) gefüllt |
\n | Es soll nicht der Inhalt der Formatvorlage, sondern die Nummerierung ausgegeben werden |
Speichern Sie die Datei und schließen Sie den VBA-Editor. Weisen Sie dem Makro einen Tastenkürzel zu.
- Datei | Optionen | Menüband anpassen
- Klicken Sie unten auf "Tastenkürzel anpassen"
- Wählen Sie die Kategorie "Makros"
Wenn der VBA-Code nicht in der Normal.dotm steht, müssen Sie unten bei "Speichern in" die Datei bzw. die Vorlage wählen. - Markierern Sie das Makro und klicken Sie in die Zeile "Neue Tastenkombination"
- Drücken Sie einen Tastenkürzel, klicken Sie auf "Zuordnen"
- Schließen Sie den Dialog
Und so funktioniert der Code:
- Markieren Sie nacheinander die Ausdrücke und weisen Sie zuerst einmal alle XE-Felder zu.
- Beginnen Sie dann mit der ersten Definition. Stellen Sie den Cursor in das XE-Feld hinter das Anführungszeichen des Ausdruckes und links vor die schließende geschweifte Klammer.
- Drücken Sie den Tastenkürzel für das Makro. Das XE-Feld wird ergänzt um den Schalter \f und den Schalter \t mit dem Text und dem StyleRef-Feld.
Zum Schluss wird das Index-Feld eingefügt:
{INDEX \f "def" \k " <TAB> " \c "1" \z "1031" }
\f "def" | Index für den Typ "def" |
\k " <TAB> " | Trennzeichen zwischen Eintrag und Kapitelnummer - drücken Sie den Tabulator zwischen den Anführungszeichen |
\c "1" | eine Spalte |
\z "1031" | Deutsche Sprache als Sortierregel |
21.10.2015