Solución:
¿Existe una forma más sencilla o eficaz de cambiar el nombre de los marcadores en documentos de Word?
No hay una función de cambio de nombre integrada en Word. Hay un par de opciones para solucionar esta falta:
-
Utilice un complemento.
-
Utilice VBA.
Solución complementaria
Usar el complemento de la herramienta de marcadores
Ofrece una interfaz de usuario amigable para hacer todo lo que hace el cuadro de diálogo de marcador estándar y mucho más.
Bookmark Tool se desarrolló para Word 2003. Es totalmente funcional con Word 2007/2010.
…
Con la sección “Agregar / Cambiar nombre de marcador”, agregar marcadores es muy sencillo.
- Como en el cuadro de diálogo estándar, simplemente seleccione texto, escriba un nombre en el campo y haga clic en “Agregar”.
- A diferencia del cuadro de diálogo estándar, la Herramienta de marcadores restringe la entrada de claves a los caracteres de nombre de marcador válidos y le avisa si intenta crear un nombre de marcador duplicado.
También puede utilizar esta sección para cambiar el nombre de un marcador existente.
Complemento de la herramienta de marcadores de origen
Solución VBA
No hay una función de cambio de nombre. Debe eliminar el nombre anterior y marcar el rango con un nuevo nombre de marcador. Aquí está el código de muestra de VBA:
Sub ReNameBookMark()
Dim doc As Word.Document
Dim rng As Word.Range
Dim bmk As Word.Bookmark
Dim inpBookmark, repBookmark, fieldStr As String
Set doc = Word.ActiveDocument
inpBookmark = InputBox("Enter bookmark name that you want to be replaced:", "BookMark Replace")
repBookmark = InputBox("Enter bookmark name replace with:", "BookMark Replace")
Set rng = doc.Bookmarks(inpBookmark).Range
Set bmk = doc.Bookmarks(inpBookmark)
bmk.Delete
rng.Bookmarks.Add (repBookmark)
If doc.Fields.Count >= 1 Then
For i = 1 To doc.Fields.Count
fieldStr = doc.Fields(i).Code.Text
If Left(fieldStr, 4) = " REF" Then
doc.Fields(i).Code.Text = Replace(fieldStr, inpBookmark, repBookmark, , 1, vbTextCompare)
doc.Fields(i).Update
End If
'MsgBox "Code = " & doc.Fields(i).Code & vbCr & "Result = " & doc.Fields(i).Result & vbCr
Next i
End If
End Sub
Fuente Cambie el “nombre” de un marcador, no el texto del mismo, con un bucle adicional para recorrer los campos en el documento para cambiar cualquiera que pueda hacer referencia al marcador al que se le cambia el nombre.
Se debe tener cuidado al utilizar este script. Por ejemplo, cambiar el nombre de los marcadores que simplemente se denominan “REF” (o una variante de este tipo en mayúsculas o minúsculas) voluntad rotura TODOS referencias de formas divertidas e inesperadas. Esto es solo un ejemplo y una solución aproximada.
Si desea cambiar el nombre de varios marcadores por lotes de una sola vez, consulte ¿Existe una forma más sencilla o eficaz de cambiar el nombre de los marcadores en documentos de Word? que también incluye código VBA de muestra.