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.