Saltar al contenido

Macro para actualizar todos los campos en un documento de Word

Contamos con tu ayuda para extender nuestros artículos con relación a las ciencias informáticas.

Solución:

Durante años, el estándar que he usado para actualizar todos los campos (con la excepción de TOC, etc., que se manejan por separado) en un documento es el que usan y recomiendan los MVP de Word, que copiaré aquí. Viene del sitio de Greg Maxey: http://gregmaxey.mvps.org/word_tip_pages/word_fields.html. Una cosa que hace que no veo en su versión es actualizar cualquier campo en Formas (cuadros de texto) en el encabezado/pie de página.

Public Sub UpdateAllFields()
  Dim rngStory As Word.Range
  Dim lngJunk As Long
  Dim oShp As Shape
  lngJunk = ActiveDocument.Sections(1).Headers(1).Range.StoryType
  For Each rngStory In ActiveDocument.StoryRanges
    'Iterate through all linked stories
    Do
      On Error Resume Next
      rngStory.Fields.Update
      Select Case rngStory.StoryType
        Case 6, 7, 8, 9, 10, 11
          If rngStory.ShapeRange.Count > 0 Then
            For Each oShp In rngStory.ShapeRange
              If oShp.TextFrame.HasText Then
                oShp.TextFrame.TextRange.Fields.Update
              End If
            Next
          End If
        Case Else
          'Do Nothing
        End Select
        On Error GoTo 0
        'Get next linked story (if any)
        Set rngStory = rngStory.NextStoryRange
      Loop Until rngStory Is Nothing
    Next
End Sub

Algunas investigaciones y experimentos produjeron la siguiente adición que parece resolver el problema adicional de actualizar los encabezados/pies de página en un documento de varias secciones.

Agregue las siguientes dimensiones a la respuesta anterior:

dim sctn as Word.Section
dim hdft as Word.HeaderFooter

Y luego, agregue al código anterior

for each sctn in doc.Sections
  for each hdft in sctn.Headers
     hdft.Range.Fields.Update
   next
   for each hdft in sctn.Footers
     hdft.Range.Fields.Update
   next
next

Sin embargo, todavía no estoy contento con este código y me gustaría reemplazarlo con algo menos complicado.

Reseñas y puntuaciones

No se te olvide recomendar este post si te fue de ayuda.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *