Te dejo tu codigo modificado para que funcione en encabezados. Saludos.
Public Sub SustituirTextoTodosDocumentos()
Dim por As Boolean, ruta As String, archivos As String, _
myDoc As Document, rango As Word.Range, buscar As String
Dim reemplazo
With Dialogs(wdDialogCopyFile)
If .Display <> 0 Then
archivos = .Directory
Else: MsgBox "Cancelado"
Exit Sub: End If
End With
por = 1
If Left(archivos, 1) = """" Then _
archivos = Mid(archivos, 2, Len(archivos) - 2)
ruta = Dir$(archivos & "*.docx")
While ruta <> ""
If por Then
buscar = InputBox("texto a buscar", "Buscando...")
If buscar = "" Then MsgBox "Cancelado": Exit Sub
reemplazo = InputBox("texto de reemplazo", "reemplazando...")
If reemplazo = "" Then MsgBox "exit...": Exit Sub
End If
por = 0
Set myDoc = Documents.Open(archivos & ruta)
'If myDoc.ProtectionType <> wdNoProtection Then _
' myDoc.Unprotect
With myDoc.Range.Find
.Text = buscar
.Replacement.Text = reemplazo
.Execute Replace:=wdReplaceAll
End With
'myDoc.Protect (wdAllowOnlyFormFields)
myDoc.Close Savechanges:=wdSaveChanges
ruta = Dir$()
Wend
End Sub
Public Sub SustituirTextoTodosDocumentos2()
Dim por As Boolean, ruta As String, archivos As String, _
myDoc As Document, rango As Word.Range, buscar As String
Dim reemplazo
With Dialogs(wdDialogCopyFile)
If .Display <> 0 Then
archivos = .Directory
Else: MsgBox "Cancelado"
Exit Sub: End If
End With
por = 1
If Left(archivos, 1) = """" Then _
archivos = Mid(archivos, 2, Len(archivos) - 2)
ruta = Dir$(archivos & "*.docx")
While ruta <> ""
If por Then
buscar = InputBox("texto a buscar", "Buscando...")
If buscar = "" Then MsgBox "Cancelado": Exit Sub
reemplazo = InputBox("texto de reemplazo", "reemplazando...")
If reemplazo = "" Then MsgBox "exit...": Exit Sub
End If
por = 0
Set myDoc = Documents.Open(archivos & ruta)
'If myDoc.ProtectionType <> wdNoProtection Then _
' myDoc.Unprotect
'With myDoc.Range.Find
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = buscar
.Replacement.Text = reemplazo
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
'.Execute Replace:=wdReplaceAll
Selection.Find.Execute Replace:=wdReplaceAll
End With
'myDoc.Protect (wdAllowOnlyFormFields)
myDoc.Close Savechanges:=wdSaveChanges
ruta = Dir$()
Wend
End SubPublic Sub SustituirTextoTodosDocumentos()
Dim por As Boolean, ruta As String, archivos As String, _
myDoc As Document, rango As Word.Range, buscar As String
Dim reemplazo
With Dialogs(wdDialogCopyFile)
If .Display <> 0 Then
archivos = .Directory
Else: MsgBox "Cancelado"
Exit Sub: End If
End With
por = 1
If Left(archivos, 1) = """" Then _
archivos = Mid(archivos, 2, Len(archivos) - 2)
ruta = Dir$(archivos & "*.docx")
While ruta <> ""
If por Then
buscar = InputBox("texto a buscar", "Buscando...")
If buscar = "" Then MsgBox "Cancelado": Exit Sub
reemplazo = InputBox("texto de reemplazo", "reemplazando...")
If reemplazo = "" Then MsgBox "exit...": Exit Sub
End If
por = 0
Set myDoc = Documents.Open(archivos & ruta)
'If myDoc.ProtectionType <> wdNoProtection Then _
' myDoc.Unprotect
With myDoc.Range.Find
.Text = buscar
.Replacement.Text = reemplazo
.Execute Replace:=wdReplaceAll
End With
'myDoc.Protect (wdAllowOnlyFormFields)
myDoc.Close Savechanges:=wdSaveChanges
ruta = Dir$()
Wend
End Sub
Public Sub SustituirTextoTodosDocumentos2()
Dim por As Boolean, ruta As String, archivos As String, _
myDoc As Document, rango As Word.Range, buscar As String
Dim reemplazo
With Dialogs(wdDialogCopyFile)
If .Display <> 0 Then
archivos = .Directory
Else: MsgBox "Cancelado"
Exit Sub: End If
End With
por = 1
If Left(archivos, 1) = """" Then _
archivos = Mid(archivos, 2, Len(archivos) - 2)
ruta = Dir$(archivos & "*.docx")
While ruta <> ""
If por Then
buscar = InputBox("texto a buscar", "Buscando...")
If buscar = "" Then MsgBox "Cancelado": Exit Sub
reemplazo = InputBox("texto de reemplazo", "reemplazando...")
If reemplazo = "" Then MsgBox "exit...": Exit Sub
End If
por = 0
Set myDoc = Documents.Open(archivos & ruta)
'If myDoc.ProtectionType <> wdNoProtection Then _
' myDoc.Unprotect
'With myDoc.Range.Find
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = buscar
.Replacement.Text = reemplazo
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
'.Execute Replace:=wdReplaceAll
Selection.Find.Execute Replace:=wdReplaceAll
End With
'myDoc.Protect (wdAllowOnlyFormFields)
myDoc.Close Savechanges:=wdSaveChanges
ruta = Dir$()
Wend
End Sub