Controlar el formato de las referencias cruzadas (Microsoft Word)
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]
.