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.)

image

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.