Suchen von Querverweisen auf bestimmte Lesezeichen (Microsoft Word)
James setzt Elemente in seinen Dokumenten als Lesezeichen für Querverweise. Manchmal muss er während der Bearbeitung etwas löschen, das er zuvor mit einem Lesezeichen versehen hat. James fragt sich, ob es eine Möglichkeit gibt, herauszufinden, ob es Querverweise auf den Text (und das Lesezeichen) gibt, die er löschen möchte.
Wenn Sie diese Aufgabe nur gelegentlich ausführen müssen, können Sie sie manuell ausführen. Wie Sie sich dem nähern, hängt jedoch davon ab, wie Sie den Querverweis erstellt haben. Sie sehen, wenn Sie einen Querverweis einfügen, zeigt Word das Dialogfeld Querverweis an. (Siehe Abbildung 1.)
Abbildung 1. Das Dialogfeld Querverweis.
Im Dialogfeld können Sie mithilfe der Dropdown-Liste Referenztyp den Typ des Querverweises auswählen, den Sie erstellen möchten. Jeder Referenztyp verwendet eine andere Variation des REF-Felds, um den tatsächlichen Querverweis einzufügen. Wenn Sie beispielsweise einen Querverweis auf ein Lesezeichen einfügen, sieht das eingefügte Feld folgendermaßen aus:
{ REF MyBookmark \h }
Der Teil „MyBookmark“ ist der Name des Lesezeichens, auf den Sie verweisen.
Der Parameter (in diesem Fall \ h) wird über die Dropdown-Liste Referenz einfügen in im Dialogfeld Querverweis gesteuert. Wenn Sie stattdessen einen Querverweis auf eine Überschrift in das Dokument einfügen, sieht dieser folgendermaßen aus:
{ REF _Ref47603047 \h }
Der Teil „_Ref47603047“ dieses Feldcodes ist ein vom System generiertes Lesezeichen, das ausgeblendet ist. Es bezieht sich auf die Überschrift, die Sie für Ihren Querverweis ausgewählt haben. Sie können diese ausgeblendeten Lesezeichen anzeigen, wenn Sie das Dialogfeld Lesezeichen anzeigen und das Kontrollkästchen Versteckte Lesezeichen unten im Dialogfeld aktivieren.
Da James in diesem Tipp ausdrücklich darum gebeten hat, Querverweise auf mit Lesezeichen versehenen Text zu finden, gehe ich davon aus, dass er bei der Erstellung des Querverweises Lesezeichen in der Dropdown-Liste Referenz einfügen in das Kreuz ausgewählt hat -Referenzdialogfeld. Dies macht es auch ein bisschen einfacher festzustellen, ob auf Ihr Lesezeichen irgendwo verwiesen wird.
Stellen Sie zunächst den Namen des Lesezeichens in dem Text fest, den Sie löschen möchten. In diesem Fall gehe ich davon aus, dass es sich um einen Namen wie MyBookmark handelt. Alles, was Sie tun müssen, ist Alt + F9 zu drücken, wodurch Word die Feldcodes in Ihrem Dokument anstelle der Ergebnisse der Feldcodes anzeigt. An dieser Stelle können Sie einfach nach dem Namen des Lesezeichens suchen (in diesem Fall MyBookmark) und jedes REF-Feld finden (denken Sie daran, dass REF-Felder für Querverweise verwendet werden)
das enthält den Lesezeichennamen. Wenn Sie den Lesezeichennamen nicht finden, gibt es keinen Querverweis auf dieses Lesezeichen, und Sie können den Text und das darin enthaltene Lesezeichen sicher löschen. Wenn Sie fertig sind, drücken Sie erneut Alt + F9, um die Anzeige der Feldcodes auszuschalten.
Wenn Sie herausfinden möchten, ob ein Lesezeichen mehrmals referenziert wird, oder wenn Sie eine umfassendere Suche durchführen möchten als das, was Suchen und Ersetzen bietet, sollten Sie die Verwendung eines Makros in Betracht ziehen. Der folgende Satz von vier Makros kann in dieser Situation nützlich sein.
Sub IsBookmarkReferenced() Dim aStory As Range Dim aShape As Shape Dim aField As Field Dim bkName As String Dim bReffed As Boolean bReffed = False If Selection.Bookmarks.Count > 0 Then bkName = Selection.Bookmarks(1).Name For Each aStory In ActiveDocument.StoryRanges If TestForBookmark(aStory, bkName) Then bReffed = True Else Select Case aStory.StoryType Case wdMainTextStory, wdEvenPagesHeaderStory, _ wdPrimaryHeaderStory, wdEvenPagesFooterStory, _ wdPrimaryFooterStory, wdFirstPageHeaderStory, _ wdFirstPageFooterStory For Each aShape In aStory.ShapeRange If aShape.TextFrame.HasText Then If TestForBookmark(aShape.TextFrame.TextRange, bkName) Then bReffed = True End If Next End Select Next aStory Endif Next aStory sTemp = "Bookmark " & bkName & " is " If Not bReffed Then sTemp = sTemp & "NOT " sTemp = sTemp & "referenced in the document." Else sTemp = "There is no bookmark in the selected text." End If MsgBox sTemp End Sub
Function TestForBookmark(tRange As Range, bkName As String) As Boolean Dim aField As Field TestForBookmark = True For Each aField In tRange.Fields Select Case aField.Type Case wdFieldRef, wdFieldAsk, wdFieldBarCode, _ wdFieldGoToButton, wdFieldHyperlink, _ wdFieldNoteRef, wdFieldPageRef, wdFieldSet If BookRef(aField.Code.Text, aField.Type) = bkName Then Exit Function Case wdFieldTOC, wdFieldTOA If TOCRef(aField.Code.Text) = bkName Then Exit Function End Select Next aField TestForBookmark = False End Function
Function BookRef(str As String, typeCode As Long) As String Dim s As String Dim i As Long s = Trim(str) If s <> "" Then i = InStr(s, " ") If i > 0 Then s = Trim(Mid(s, i)) If typeCode = wdFieldHyperlink Then If InStr(s, "\l") > 0 Then s = Mid(s, InStr(s, """") + 1) i = InStr(s, """") If i > 1 Then s = Left(s, i - 1) Else s = "" End If Else i = InStr(s, " ") If i > 0 Then s = Trim(Left(s, i)) End If End If BookRef = s End Function
Function TOCRef(str As String) As String Dim s As String Dim i As Long s = Trim(str) i = InStr(s, "\b") If i = 0 Then TOCRef = "" Exit Function End If s = Trim(Mid(s, i + 2)) i = InStr(s, " ") If i > 0 Then s = Left(s, i - 1) TOCRef = s End Function
Um die Makros verwenden zu können, müssen Sie lediglich den Text auswählen, den Sie löschen möchten, und dann das Makro IsBookmarkReferenced ausführen.
Es verwendet wiederum die anderen drei Funktionen, um herauszufinden, ob auf ein Lesezeichen im ausgewählten Text an anderer Stelle verwiesen wird. Das Makro überprüft Felder nicht nur im Hauptdokument selbst, sondern auch in Kopf-, Fuß- und Textfeldern.
WordTips ist Ihre Quelle für kostengünstige Microsoft Word-Schulungen.
(Microsoft Word ist die weltweit beliebteste Textverarbeitungssoftware.) Dieser Tipp (7619) gilt für Microsoft Word 2007, 2010, 2013, 2016, 2019 und Word in Office 365.