AFAIK для изменения заголовка документа (просто) должен быть сделан с открытым документом. Тем не менее, у вас есть несколько вариантов. Во-первых, если документы сохраняются в офисном формате XML, вы можете открыть файлы с помощью библиотеки MSXML и изменить данные в заголовке. (Или любой из десятков других способов изменить то, что по сути является текстовым файлом.) Если файл (ы) все еще в двоичном формате, у вас действительно есть только один из двух вариантов. Первый - открыть файл через vba и изменить заголовок через объектную модель документа. Вторым было бы выяснить двоичный формат (который задокументирован) и изменить его, используя собственный двоичный ввод-вывод VB6 / VBA (очень нетривиальный).
Если я не думал, что смогу выиграть больше времени, чем потерять написание кода для непосредственного изменения документов, я, вероятно, просто переберу все файлы в папке, открою их и изменим. Что касается хранения заголовка где-нибудь ... Вы можете просто поместить данные заголовка в текстовый файл и извлечь его. Или сохранить шаблон документа где-нибудь.
Вот очень тривиальный пример:
Public Sub Example()
Dim asFiles() As String
Dim lFile As Long
Dim docCrnt As Word.Document
asFiles = GetFiles("C:\Test\", "*.doc")
For lFile = 0& To UBound(asFiles)
Set docCrnt = Word.Documents.Open(asFiles(lFile))
docCrnt.Windows(1).View.SeekView = wdSeekCurrentPageHeader
Selection.Text = "I am the header."
docCrnt.Close True
Next
End Sub
Public Function GetFiles( _
ByVal folderPath As String, _
Optional ByVal pattern As String = vbNullString _
) As String()
Dim sFile As String
Dim sFolder As String
Dim asRtnVal() As String
Dim lIndx As Long
If Right$(folderPath, 1&) = "\" Then
sFolder = folderPath
Else
sFolder = folderPath & "\"
End If
sFile = Dir(sFolder & pattern)
Do While LenB(sFile)
ReDim Preserve asRtnVal(lIndx) As String
asRtnVal(lIndx) = sFolder & sFile
lIndx = lIndx + 1&
sFile = Dir
Loop
If lIndx = 0& Then
ReDim asRtnVal(-1& To -1&) As String
End If
GetFiles = asRtnVal
Erase asRtnVal
End Function