Steuern des Formats von Querverweisen (Microsoft Word)
Stephen fragte, ob es möglich sei, das Format der von Word eingefügten Querverweise zu steuern. Wenn er ein Etikett und eine Nummer wie Tabelle 1 oder Abbildung 12 einfügt, möchte er das Etikett in Kleinbuchstaben (Tabelle, Abbildung) und einen nicht unterbrechenden Abstand zwischen dem Etikett und der Nummer.
Es gibt keine Möglichkeit, diese Art der Querverweisformatierung in Word zu steuern. Natürlich können Sie die Querverweise nach dem Platzieren manuell ändern, aber jedes Mal, wenn Sie Felder aktualisieren, wird das von Word gewählte Originalformat für sie verwendet. Es gibt einige makrobasierte Lösungen, die Sie ausprobieren können. Die erste Lösung ändert die tatsächlichen Feldcodes, die für das Feld verwendet werden:
Sub FieldRefChanges1() On Error Resume Next Dim oStoryRng As Range Dim oFld As Field For Each oStoryRng In ActiveDocument.StoryRanges For Each oFld In oStoryRng.Fields If oFld.Type = wdFieldRef And oFld.Result.Words.Count <= 2 Then 'add format switch with lowercase option to field codes oFld.Code.Text = oFld.Code.Text & "\* lower " 'updates the field results to display the new format oFld.Update End If Next oFld Next oStoryRng End Sub
Das Makro enthält einige verschachtelte For-Schleifen. Der erste Schritt geht durch jede Geschichte im Dokument und der zweite geht durch jedes Feld in jeder Geschichte. Eine If-Anweisung wird dann verwendet, um sicherzustellen, dass das Feld ein REF-Feld ist (die Art, die für Querverweise verwendet wird) und dass das Ergebnis des Feldes zwei oder weniger Wörter sind (wie in Tabelle 1 oder Abbildung 12).
Wenn diese Kriterien erfüllt sind, ändert das Makro den tatsächlichen Feldcode und fügt den Schalter hinzu, der dazu führt, dass das Feld in Kleinbuchstaben angezeigt wird.
Dieses Makro weist einige Nachteile auf. Wenn Sie es mehrmals ausführen, wird zunächst der untere Schalter \ * mehrmals zu den REF-Feldern hinzugefügt. Zweitens ändert das Makro den Platz in den Feldergebnissen nicht in einen nicht unterbrechenden Raum.
Um beide Probleme zu lösen, ändern Sie einfach das Makro so, dass es den manuellen Prozess automatisiert, den Sie zum Ändern der Makroergebnisse durchlaufen würden.
Sub FieldRefChanges2() On Error Resume Next Dim oStoryRng As Range Dim oFld As Field Dim sTemp As String Dim J As String For Each oStoryRng In ActiveDocument.StoryRanges For Each oFld In oStoryRng.Fields If oFld.Type = wdFieldRef And oFld.Result.Words.Count <= 2 Then sTemp = oFld.Result.Text sTemp = LCase(sTemp) J = InStr(sTemp, " ") sTemp = Left(sTemp, J - 1) & Chr(160) & _ Mid(sTemp, J + 1, Len(sTemp) - J) oFld.Result.Text = sTemp End If Next oFld Next oStoryRng End Sub
Dieses Makro ist im Wesentlichen dasselbe wie das vorherige, außer dass es streng mit dem Ergebnistext für das Feld arbeitet. Der Text wird der Variablen sTemp zugewiesen, die dann in Kleinbuchstaben konvertiert wird. Die Position des Raums wird bestimmt und durch einen nicht unterbrechenden Raum ersetzt. Das Ergebnis wird dann wieder in den Ergebnistext für das Feld eingefügt.
_Hinweis: _
Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der WordTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.
WordTips ist Ihre Quelle für kostengünstige Microsoft Word-Schulungen.
(Microsoft Word ist die weltweit beliebteste Textverarbeitungssoftware.) Dieser Tipp (141) gilt für Microsoft Word 97, 2000, 2002 und 2003. Sie finden eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Word (Word 2007) und später) hier: