William necesita insertar el nombre del archivo en una tabla que se encuentra en un cuadro de texto en el pie de página de un documento (es un requisito del cliente hacerlo de esa manera).

Quiere que ese nombre de archivo se actualice automáticamente cada vez que guarda el documento, o al menos cuando usa «Guardar como» para crear un nuevo archivo.

William ha insertado un campo NOMBRE DE ARCHIVO, pero aún tiene que recordar abrir el pie de página y hacer clic allí y presionar F9 para actualizarlo. Preferiría que lo hiciera automáticamente.

Históricamente, Word se desarrolló con el entendimiento de que sus documentos eventualmente se imprimirían. (Esto fue antes de los días de realizar la mayoría de las tareas en línea, electrónicamente). Uno de los artefactos relacionados con esta comprensión histórica es que Word no actualiza los campos hasta que se imprime. Por lo tanto, los campos no se actualizan cuando realiza otras tareas, como guardar o usar Guardar como.

Con este entendimiento en mente, hay un par de cosas que puede hacer. Primero es engañar a Word para que piense que está imprimiendo. Sin embargo, antes de hacer este «truco», querrá seguir estos pasos:

  1. Muestra el cuadro de diálogo Opciones de Word. (En Word 2007, haga clic en el botón Office y luego en Opciones de Word. En Word 2010 y versiones posteriores, muestre la pestaña Archivo de la cinta y luego haga clic en Opciones).

  2. A la izquierda del cuadro de diálogo, haga clic en Mostrar. (Ver figura 1)

  3. Asegúrese de que la casilla de verificación Actualizar campos antes de imprimir esté seleccionada.

  4. Haga clic en Avanzado en el lado izquierdo del cuadro de diálogo.

  5. Desplácese hacia abajo hasta que vea la sección Imprimir. (Ver figura 2)

  6. Asegúrese de que la casilla de verificación Permitir que los campos que contienen los cambios registrados se actualicen antes de imprimir esté seleccionada.

  7. Haga clic en Aceptar para guardar sus cambios.

Ahora, todo lo que necesita hacer cuando desee actualizar los campos es presionar Ctrl + P. Esto muestra el cuadro de diálogo Imprimir (Word 2007) o las opciones de impresión (versiones posteriores de Word). Una vez que haya llegado a este punto, los campos del documento deben actualizarse porque Word anticipa que va a imprimir. Puede presionar Esc o hacer clic en la pestaña Inicio de la cinta para abandonar la impresión, y debe tener en cuenta que todos los campos de su documento están actualizados.

También puede utilizar una macro para realizar estas tareas. La siguiente macro no cambia la configuración en el cuadro de diálogo Opciones de Word, pero realiza lo suficiente de la secuencia de impresión que engaña a Word para que actualice los campos.

Sub UpdateAllFields()

With ActiveDocument         .PrintPreview         .ClosePrintPreview     End With End Sub

Hay otro enfoque macro que puede tomar, si lo desea. Este enfoque evita cualquier engaño y, en cambio, recorre cada una de las «historias»

en un documento y actualiza los campos que se encuentran en esas historias. (Una «historia»

se ve mejor como una capa en su documento. El documento principal es una historia, encabezados y pies de página, otra, gráficos, otra, y así sucesivamente.) En realidad, hay dos macros utilizadas en este enfoque; ejecutaría la macro UpdateAllFields para iniciar el proceso de actualización.

Sub UpdateAllFields()

Dim objStory As Range     Dim objTOC As TableOfContents     Dim objTOA As TableOfAuthorities     Dim objTOF As TableOfFigures     Dim objIndex As Index

Application.ScreenUpdating = False     Application.DisplayAlerts = wdAlertsNone

For Each objStory In ActiveDocument.StoryRanges         UpdateFieldsInStory objStory

While Not (objStory.NextStoryRange Is Nothing)

Set objStory = objStory.NextStoryRange             UpdateFieldsInStory objStory         Wend     Next             For Each objTOC In ActiveDocument.TablesOfContents         objTOC.Update     Next

For Each objTOA In ActiveDocument.TablesOfAuthorities         objTOA.Update     Next

For Each objTOF In ActiveDocument.TablesOfFigures         objTOF.Update     Next

For Each objIndex In ActiveDocument.Indexes         objIndex.Update     Next

Application.DisplayAlerts = wdAlertsAll     Application.ScreenUpdating = True End Sub
Private Sub UpdateFieldsInStory(iobjStory As Range)

Dim objShape As Shape

With iobjStory         .Fields.Update

Select Case .StoryType             Case wdMainTextStory, wdPrimaryHeaderStory, _               wdPrimaryFooterStory, wdEvenPagesHeaderStory, _               wdEvenPagesFooterStory, wdFirstPageHeaderStory, _               wdFirstPageFooterStory

For Each objShape In .ShapeRange                     With objShape.TextFrame                         If .HasText Then .TextRange.Fields.Update                     End With                 Next         End Select     End With End Sub

Si desea obtener más información sobre la actualización de campos mediante macros, puede visitar esta página en el sitio de Greg Maxey; preste especial atención a la sección titulada «Actualización de campos»:

http://gregmaxey.mvps.org/word_tip_pages/word_fields.html

Como puede ver, no es necesariamente fácil actualizar todos los campos de un documento. Parecería que Microsoft podría agregar fácilmente tal capacidad, pero incluso con muchos años bajo el puente, Word todavía carece de tal capacidad. Si desea que Microsoft agregue la capacidad, puede visitar su foro UserVoice y votar por dicha capacidad:

https://word.uservoice.com/forums/304924-word-for-windows-desktop-application/suggestions/11685894

_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). Este consejo (13475) se aplica a Microsoft Word 2007, 2010, 2013 y 2016.