Das Problem mit Ihrem Code ist, dass es alle Teile des Dokuments anspricht - die Sie nicht möchten. Sie möchten nur die Fußzeile (n). Ein Word-Dokument kann viele Fußzeilen haben, abhängig davon, wie viele Abschnitte das Dokument enthält und ob die Fußzeilen in den Abschnitten von früheren Abschnitten getrennt wurden. Also, wenn Sie alle Fußzeilen überprüfen wollte, dann würden Sie alle Schleife müssen die Abschnitte, so etwas wie
Dim sec as Word.Section
Dim rngFooter as Word.Range
For each sec in ActiveDocument.Sections
Set rngFooter = sec.Footers(wdHeaderFooterPrimary).Range
For each field in rngFooter.Fields
aField.Result.Text = oldFilename
Next field
Next sec
Aber bedenken Sie wird diese alle Felder in den Fußzeilen adressieren, so wäre es am Ende zu beeinträchtigen Alle Seitennummern oder Daten, die Sie haben könnten ...
Es gibt ein anderes Problem mit der Vorgehensweise, die Sie verwenden: Feldcodes werden aktualisiert, und wenn sie dies tun, haben Sie sie wie in Ihrem Code geschrieben , wird verloren sein. Sie können also eine sehr unangenehme Überraschung erleben, wenn Sie dieses Dokument drucken oder wenn eine andere Aktion eine Aktualisierung des Feldcodes auslöst.
Da Sie nicht auf den Feldcode angewiesen sind, um den Dokumentnamen automatisch zu generieren, verwenden Sie keinen Feldcode (was auch immer es sein mag). Löschen Sie den Feldcode und verwenden Sie stattdessen ein Lesezeichen. Dann können Sie den Namen des Dokuments zu dem Lesezeichen, so etwas wie dies zu:
Dim rngBkm as Word.Range
Dim sBkmName as String
sBkmName = "DocName"
If ActiveDocument.Bookmarks.Exists(sBkmName) Then
Set rngBkm = ActiveDocument.Bookmarks(sBkmName)
rngBkm.Text = oldFileName
'Assigning the text deletes the bookmark, so add it back
ActiveDocument.Bookmarks.Add sBkmName, rngBkm
End If
Hinweis: Ich weiß nicht empfehlen verwenden Sie den Vorschlag in Kommentare der Fußzeile zu öffnen - keine Notwendigkeit, tatsächlich sie öffnen und besser, nicht zu.
müssen Sie die Fußzeile öffnen und dann Ihre Schritte ausführen. ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter – Sorceri