Incluir encabezados y pies de página al seleccionar todo (Microsoft Word)
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]
.