Tim creó una macro simple para actualizar todos los campos en una plantilla. La macro incluye un paso que selecciona todo el documento, muy parecido a presionar Ctrl + A. Este paso no selecciona encabezados y pies de página, y Tim teme que haya campos para actualizar en esas ubicaciones. Se pregunta si hay una forma de incluir encabezados y pies de página al seleccionar todo, o si hay una forma diferente para que su macro actualice los campos en las áreas de encabezado o pie de página.

La respuesta simple es que necesita modificar su código de macro para que se vea en todas las diferentes áreas de Word donde pueda haber campos. El problema de utilizar un enfoque de «seleccionar todo» es que solo selecciona texto en el documento principal. Los encabezados, pies de página y una gran cantidad de otros elementos se mantienen en sus propias capas separadas que les impiden ser seleccionados con todo el texto del documento.

Si simplemente desea actualizar los campos en el texto principal y en los encabezados y pies de página, entonces debe usar una técnica como la siguiente:

Sub MyUpdateFields1()

ActiveDocument.StoryRanges(wdMainTextStory).Fields.Update     ActiveDocument.StoryRanges(wdPrimaryFooterStory).Fields.Update     ActiveDocument.StoryRanges(wdPrimaryHeaderStory).Fields.Update End Sub

Tenga en cuenta que las diferentes capas de un documento se denominan «historias» y se mantienen dentro de su propia colección. Si bien esta simple macro actualiza muy rápidamente los campos de las historias que contienen el texto principal, los pies de página y los encabezados, hay otras historias (capas)

donde podría haber campos que requieran actualización. La siguiente macro examina cada historia, independientemente de su tipo, y realiza la actualización necesaria:

Sub MyUpdateFields2()

Dim story As Word.Range

For Each story In ActiveDocument.StoryRanges         Do             story.Fields.Update             ' Check linked stories as linked stories are not independent             Set story = story.NextStoryRange         Loop Until (story Is Nothing)

Next End Sub

Sin embargo, si realmente quiere estar completo, hay más que solo las diferentes capas de la historia que debe revisar. Por ejemplo, puede ser que haya algunos campos contenidos en cuadros de texto que necesiten actualizarse. Se necesita una macro más completa para tratar con todos estos otros lugares en los que se podrían ubicar los campos. En el siguiente ejemplo, observe los muchos elementos diferentes del documento que se pueden verificar en busca de campos.

Sub MyUpdateFields3()

Dim doc As Document ' Pointer to Active Document     Dim wnd As Window ' Pointer to Document's Window     Dim lngMain As Long ' Main Pane Type Holder     Dim lngSplit As Long ' Split Type Holder     Dim lngActPane As Long ' ActivePane Number     Dim rngStory As Range ' Range Objwct for Looping through Stories     Dim TOC As TableOfContents ' Table of Contents Object     Dim TOA As TableOfAuthorities 'Table of Authorities Object     Dim TOF As TableOfFigures 'Table of Figures Object     Dim shp As Shape

' Set Objects     Set doc = ActiveDocument     Set wnd = ActiveDocument.ActiveWindow

' get Active Pane Number     lngActPane = wnd.ActivePane.Index

' Hold View Type of Main pane     lngMain = wnd.Panes(1).View.Type

' Hold SplitSpecial     lngSplit = wnd.View.SplitSpecial

' Get Rid of any split     wnd.View.SplitSpecial = wdPaneNone

' Set View to Normal     wnd.View.Type = wdNormalView

' Loop through each story in doc to update     For Each rngStory In doc.StoryRanges         If rngStory.StoryType = wdCommentsStory Then             Application.DisplayAlerts = wdAlertsNone             ' Update fields             rngStory.Fields.Update             Application.DisplayAlerts = wdAlertsAll         Else            ' Update fields            rngStory.Fields.Update         End If     Next

For Each shp In doc.Shapes         With shp.TextFrame             If .HasText Then                 shp.TextFrame.TextRange.Fields.Update             End If         End With     Next

' Loop through TOC and update     For Each TOC In doc.TablesOfContents         TOC.Update     Next

' Loop through TOA and update     For Each TOA In doc.TablesOfAuthorities         TOA.Update     Next

' Loop through TOF and update     For Each TOF In doc.TablesOfFigures         TOF.Update     Next

' Return Split to original state     wnd.View.SplitSpecial = lngSplit

' Return main pane to original state     wnd.Panes(1).View.Type = lngMain

' Active proper pane     wnd.Panes(lngActPane).Activate

' Close and release all pointers     Set wnd = Nothing     Set doc = Nothing End Sub

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 (522) se aplica a Microsoft Word 97, 2000, 2002 y 2003. Puede encontrar una versión de este consejo para la interfaz de cinta de Word (Word 2007 y más tarde) aquí:

link: / wordribbon-Incluyendo_Encabezados_y_pies_cuando_Seleccionando_todos [Incluyendo encabezados y pies de página al seleccionar todo].