Trovare riferimenti incrociati a segnalibri specifici (Microsoft Word)
James inserisce i segnalibri nei suoi documenti per motivi di riferimenti incrociati. A volte, nel processo di modifica, potrebbe essere necessario eliminare qualcosa che aveva precedentemente aggiunto ai segnalibri. James si chiede se c’è un modo per scoprire se ci sono riferimenti incrociati al testo (e al segnalibro) che sta pensando di eliminare.
Se devi eseguire questa operazione solo una volta ogni tanto, puoi farlo manualmente. Il modo in cui ti avvicini, tuttavia, dipenderà da come hai creato il riferimento incrociato. Vedete, quando inserite un riferimento incrociato, Word visualizza la finestra di dialogo Riferimento incrociato. (Vedi figura 1.)
Figura 1. La finestra di dialogo Riferimento incrociato.
Nella finestra di dialogo, utilizzando l’elenco a discesa Tipo di riferimento, è possibile scegliere il tipo di riferimento incrociato che si desidera creare. Ogni tipo di riferimento utilizza una variazione diversa del campo REF per inserire il riferimento incrociato effettivo. Ad esempio, se inserisci un riferimento incrociato a un segnalibro, il campo inserito avrà questo aspetto:
{ REF MyBookmark \h }
La parte “MyBookmark” è il nome del segnalibro a cui stai facendo riferimento.
Il parametro (in questo caso \ h) è controllato dall’elenco a discesa Inserisci riferimento a nella finestra di dialogo Riferimento incrociato. Se invece inserisci un rimando a un’intestazione nel documento, sarà simile a questo:
{ REF _Ref47603047 \h }
La parte “_Ref47603047” di questo codice di campo è un segnalibro generato dal sistema nascosto. Si riferisce all’intestazione selezionata per il riferimento incrociato. È possibile visualizzare questi segnalibri nascosti se si visualizza la finestra di dialogo Segnalibro e si fa clic sulla casella di controllo Segnalibri nascosti nella parte inferiore della finestra di dialogo.
In questo suggerimento, poiché James ha specificamente chiesto di trovare riferimenti incrociati al testo con segnalibro, presumo che quando ha creato il riferimento incrociato, lo abbia fatto scegliendo Segnalibro nell’elenco a discesa Inserisci riferimento in della Croce -finestra di dialogo di riferimento. Questo in realtà rende anche un po ‘più facile scoprire se il tuo segnalibro ha riferimenti incrociati ovunque.
Inizia cercando di capire il nome del segnalibro che si trova nel testo che intendi eliminare. In questo caso, presumo che sia un nome come MyBookmark. Tutto quello che devi fare è premere Alt + F9, che fa sì che Word visualizzi i codici di campo nel tuo documento piuttosto che i risultati dei codici di campo. A questo punto puoi semplicemente cercare il nome del segnalibro (MyBookmark, in questo caso) e sarai in grado di trovare qualsiasi campo REF (ricorda, i campi REF sono usati per i riferimenti incrociati)
che contiene il nome del segnalibro. Se non trovi il nome del segnalibro, non ci sono riferimenti incrociati a quel segnalibro e puoi tranquillamente eliminare il testo e il segnalibro che contiene. Quando hai finito, premi di nuovo Alt + F9 per disattivare la visualizzazione dei codici di campo.
Se hai bisogno di scoprire se un segnalibro è referenziato più di una volta ogni tanto o se desideri eseguire una ricerca più completa rispetto a quella offerta da Trova e sostituisci, dovresti considerare l’utilizzo di una macro. Il seguente set di quattro macro può tornare utile in questa situazione.
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
Per utilizzare le macro, tutto ciò che devi fare è selezionare il testo che stai considerando di eliminare e quindi eseguire la macro IsBookmarkReferenced.
A sua volta, utilizza le altre tre funzioni per capire se qualche segnalibro nel testo selezionato è referenziato altrove. La macro controllerà i campi non solo nel documento principale stesso, ma anche in intestazioni, piè di pagina e caselle di testo.
WordTips è la tua fonte di formazione economica su Microsoft Word.
(Microsoft Word è il software di elaborazione testi più popolare al mondo.) Questo suggerimento (7619) si applica a Microsoft Word 2007, 2010, 2013, 2016, 2019 e Word in Office 365.