James marca elementos en sus documentos para hacer referencias cruzadas. A veces, en el proceso de edición, es posible que deba eliminar algo que haya marcado previamente. James se pregunta si hay alguna manera de averiguar si hay referencias cruzadas al texto (y al marcador) que está pensando en eliminar.

Si solo necesita realizar esta tarea de vez en cuando, puede hacerlo manualmente. Sin embargo, cómo lo aborde dependerá de cómo creó la referencia cruzada. Verá, cuando inserta una referencia cruzada, Word muestra el cuadro de diálogo Referencia cruzada. (Ver figura 1)

image

Figura 1. Cuadro de diálogo Referencia cruzada.

En el cuadro de diálogo, utilizando la lista desplegable Tipo de referencia, puede elegir el tipo de referencia cruzada que desea crear. Cada tipo de referencia utiliza una variación diferente del campo REF para insertar la referencia cruzada real. Por ejemplo, si inserta una referencia cruzada a un marcador, entonces el campo que se inserta se ve así:

{ REF MyBookmark \h }

La parte «MyBookmark» es el nombre del marcador al que está haciendo referencias cruzadas.

El parámetro (en este caso \ h) se controla mediante la lista desplegable Insertar referencia a en el cuadro de diálogo Referencia cruzada. Si, en cambio, inserta una referencia cruzada a un encabezado en el documento, se verá similar a esto:

{ REF _Ref47603047 \h }

La parte «_Ref47603047» de este código de campo es un marcador generado por el sistema que está oculto. Se refiere al encabezado que seleccionó para su referencia cruzada. Puede ver estos marcadores ocultos si muestra el cuadro de diálogo Marcador y hace clic en la casilla de verificación Marcadores ocultos en la parte inferior del cuadro de diálogo.

En este consejo, debido a que James pidió específicamente encontrar referencias cruzadas al texto marcado como favorito, voy a asumir que cuando creó la referencia cruzada, lo hizo eligiendo Marcador en la lista desplegable Insertar referencia a de la Cruz -cuadro de diálogo de referencia. En realidad, esto también hace que sea un poco más fácil encontrar si su marcador tiene referencias cruzadas en cualquier lugar.

Empiece por averiguar el nombre del marcador que está en el texto que está considerando eliminar. En este caso, voy a asumir que es un nombre como MyBookmark. Todo lo que necesita hacer es presionar Alt + F9, lo que hace que Word muestre los códigos de campo en su documento en lugar de los resultados de los códigos de campo. En este punto, simplemente puede buscar el nombre del marcador (MyBookmark, en este caso) y podrá encontrar cualquier campo REF (recuerde, los campos REF se utilizan para referencias cruzadas)

que contiene el nombre del marcador. Si no encuentra el nombre del marcador, entonces no hay ninguna referencia cruzada a ese marcador y puede eliminar de forma segura el texto y el marcador que contiene. Cuando haya terminado, presione Alt + F9 nuevamente para apagar la visualización de códigos de campo.

Si necesita averiguar si se hace referencia a un marcador más de una vez cada tanto, o si desea realizar una búsqueda más completa que la que ofrece Buscar y reemplazar, debería considerar el uso de una macro. El siguiente conjunto de cuatro macros puede resultar útil en esta situación.

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

Para usar las macros, todo lo que necesita hacer es seleccionar el texto que está considerando eliminar y luego ejecutar la macro IsBookmarkReferenced.

A su vez, utiliza las otras tres funciones para averiguar si algún marcador en el texto seleccionado se hace referencia en otro lugar. La macro comprobará los campos no solo en el documento principal en sí, sino también en los encabezados, pies de página y cuadros de texto.

WordTips es su fuente de formación rentable en Microsoft Word.

(Microsoft Word es el software de procesamiento de texto más popular del mundo). Este consejo (7619) se aplica a Microsoft Word 2007, 2010, 2013, 2016, 2019 y Word en Office 365.