Stephen preguntó si es posible controlar el formato de las referencias cruzadas insertadas por Word. Cuando inserta una etiqueta y un número como la Tabla 1 o la Figura 12, quiere la etiqueta en minúsculas (tabla, figura) y un espacio que no se rompa entre la etiqueta y el número.

No hay forma de controlar este tipo de formato de referencia cruzada en Word. Obviamente, puede cambiar las referencias cruzadas manualmente después de colocarlas, pero siempre que actualice los campos, se usará el formato original elegido por Word para ellos. Hay un par de soluciones basadas en macros que puede probar. La primera solución cambiará los códigos de campo reales utilizados para el campo:

Sub FieldRefChanges1()

On Error Resume Next     Dim oStoryRng As Range     Dim oFld As Field

For Each oStoryRng In ActiveDocument.StoryRanges         For Each oFld In oStoryRng.Fields             If oFld.Type = wdFieldRef And oFld.Result.Words.Count <= 2 Then                 'add format switch with lowercase option to field codes                 oFld.Code.Text = oFld.Code.Text & "\* lower "

'updates the field results to display the new format                 oFld.Update             End If         Next oFld     Next oStoryRng End Sub

La macro incluye un par de bucles For anidados. El primero pasa por cada historia del documento y el segundo pasa por cada campo de cada historia. Luego se usa una instrucción If para asegurarse de que el campo es un campo REF (del tipo que se usa para referencias cruzadas) y que el resultado del campo es de dos o menos palabras (como en la Tabla 1 o la Figura 12).

Si se cumplen estos criterios, la macro realiza un cambio en el código de campo real y agrega el modificador que da como resultado que el campo se muestre en minúsculas.

Hay un par de inconvenientes en esta macro. Primero, si lo ejecuta varias veces, el modificador \ * lower se agrega a los campos REF varias veces. En segundo lugar, la macro no cambia el espacio en los resultados del campo a un espacio que no se rompe.

Para superar ambos problemas, simplemente modifique la macro para que automatice el proceso manual por el que pasaría para cambiar los resultados de la macro.

Sub FieldRefChanges2()

On Error Resume Next     Dim oStoryRng As Range     Dim oFld As Field     Dim sTemp As String     Dim J As String

For Each oStoryRng In ActiveDocument.StoryRanges         For Each oFld In oStoryRng.Fields             If oFld.Type = wdFieldRef And oFld.Result.Words.Count <= 2 Then                 sTemp = oFld.Result.Text                 sTemp = LCase(sTemp)

J = InStr(sTemp, " ")

sTemp = Left(sTemp, J - 1) & Chr(160) & _                   Mid(sTemp, J + 1, Len(sTemp) - J)

oFld.Result.Text = sTemp             End If         Next oFld     Next oStoryRng End Sub

Esta macro es esencialmente la misma que la anterior, excepto que funciona estrictamente con el texto del resultado del campo. El texto se asigna a la variable sTemp, que luego se convierte a minúsculas. Se determina la posición del espacio y se reemplaza con un espacio que no se rompe. A continuación, el resultado se vuelve a introducir en el texto del resultado del campo.

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios WordTips), he preparado una página especial que incluye información útil.

link: / wordribbon-WordTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

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). Esta sugerencia (8479) se aplica a Microsoft Word 2007, 2010, 2013, 2016, 2019 y Word en Office 365. Puede encontrar una versión de esta sugerencia para interfaz de menú anterior de Word aquí:

link: / word-Controlling_the_Format_of_Cross-References [Control del formato de las referencias cruzadas].