William muss den Dateinamen in eine Tabelle einfügen, die sich in einem Textfeld in der Fußzeile eines Dokuments befindet (dies ist eine Client-Anforderung).

Er möchte, dass dieser Dateiname jedes Mal automatisch aktualisiert wird, wenn er das Dokument speichert, oder zumindest, wenn er „Speichern unter“ verwendet, um eine neue Datei zu erstellen.

William hat ein FILENAME-Feld eingefügt, muss jedoch daran denken, die Fußzeile zu öffnen, dort zu klicken und F9 zu drücken, um sie zu aktualisieren. Er würde es vorziehen, es einfach automatisch zu tun.

In der Vergangenheit wurde Word mit dem Verständnis entwickelt, dass Ihre Dokumente irgendwann gedruckt werden. (Dies war vor den Tagen, als die meisten Aufgaben online elektronisch erledigt wurden.) Eines der Artefakte im Zusammenhang mit diesem historischen Verständnis ist, dass Word Felder erst aktualisiert, wenn Sie zum Drucken gehen. Daher werden Felder nicht aktualisiert, wenn Sie andere Aufgaben ausführen, z. B. Speichern oder Speichern unter.

In Anbetracht dieses Verständnisses können Sie einige Dinge tun. Zunächst müssen Sie Word dazu verleiten, zu glauben, dass Sie drucken. Bevor Sie diesen „Trick“ ausführen, sollten Sie jedoch die folgenden Schritte ausführen:

  1. Zeigen Sie das Dialogfeld Word-Optionen an. (Klicken Sie in Word 2007 auf die Schaltfläche Office und dann auf Word-Optionen. Zeigen Sie in Word 2010 und späteren Versionen die Registerkarte Datei des Menübands an und klicken Sie dann auf Optionen.)

  2. Klicken Sie links im Dialogfeld auf Anzeigen. (Siehe Abbildung 1.)

  3. Stellen Sie sicher, dass das Kontrollkästchen Felder vor Drucken aktualisieren aktiviert ist.

  4. Klicken Sie links im Dialogfeld auf Erweitert.

  5. Scrollen Sie nach unten, bis Sie den Abschnitt Drucken sehen. (Siehe Abbildung 2.)

  6. Stellen Sie sicher, dass das Kontrollkästchen Felder mit nachverfolgten Änderungen vor dem Drucken aktualisieren zulassen aktiviert ist.

  7. Klicken Sie auf OK, um Ihre Änderungen zu speichern.

Wenn Sie die Felder aktualisieren möchten, müssen Sie nur noch Strg + P drücken. Daraufhin werden das Dialogfeld Drucken (Word 2007) oder die Druckoptionen (spätere Versionen von Word) angezeigt. Sobald Sie an diesem Punkt angelangt sind, sollten die Felder im Dokument aktualisiert werden, da Word damit rechnet, dass Sie drucken werden. Sie können Esc drücken oder auf die Registerkarte Home des Menübands klicken, um den Druckvorgang abzubrechen. Beachten Sie, dass alle Felder in Ihrem Dokument aktualisiert werden.

Sie können diese Aufgaben auch mit einem Makro ausführen. Das folgende Makro ändert die Einstellungen im Dialogfeld „Word-Optionen“ nicht, führt jedoch gerade genug Drucksequenzen aus, um Word zum Aktualisieren der Felder zu verleiten.

Sub UpdateAllFields()

With ActiveDocument         .PrintPreview         .ClosePrintPreview     End With End Sub

Falls gewünscht, können Sie einen anderen Makroansatz wählen. Dieser Ansatz umgeht alle Tricks und geht stattdessen jede der „Geschichten“ durch

in einem Dokument und aktualisiert alle Felder in diesen Geschichten. (Eine „Story“

wird am besten als Ebene in Ihrem Dokument angezeigt. Das Hauptdokument ist eine Story, Kopf- und Fußzeilen eine andere, Grafiken eine andere usw.) Bei diesem Ansatz werden tatsächlich zwei Makros verwendet. Sie würden das UpdateAllFields-Makro ausführen, um den Aktualisierungsprozess zu starten.

Sub UpdateAllFields()

Dim objStory As Range     Dim objTOC As TableOfContents     Dim objTOA As TableOfAuthorities     Dim objTOF As TableOfFigures     Dim objIndex As Index

Application.ScreenUpdating = False     Application.DisplayAlerts = wdAlertsNone

For Each objStory In ActiveDocument.StoryRanges         UpdateFieldsInStory objStory

While Not (objStory.NextStoryRange Is Nothing)

Set objStory = objStory.NextStoryRange             UpdateFieldsInStory objStory         Wend     Next             For Each objTOC In ActiveDocument.TablesOfContents         objTOC.Update     Next

For Each objTOA In ActiveDocument.TablesOfAuthorities         objTOA.Update     Next

For Each objTOF In ActiveDocument.TablesOfFigures         objTOF.Update     Next

For Each objIndex In ActiveDocument.Indexes         objIndex.Update     Next

Application.DisplayAlerts = wdAlertsAll     Application.ScreenUpdating = True End Sub
Private Sub UpdateFieldsInStory(iobjStory As Range)

Dim objShape As Shape

With iobjStory         .Fields.Update

Select Case .StoryType             Case wdMainTextStory, wdPrimaryHeaderStory, _               wdPrimaryFooterStory, wdEvenPagesHeaderStory, _               wdEvenPagesFooterStory, wdFirstPageHeaderStory, _               wdFirstPageFooterStory

For Each objShape In .ShapeRange                     With objShape.TextFrame                         If .HasText Then .TextRange.Fields.Update                     End With                 Next         End Select     End With End Sub

Wenn Sie weitere Informationen zum Aktualisieren von Feldern mithilfe von Makros erhalten möchten, können Sie diese Seite auf der Website von Greg Maxey besuchen. Achten Sie besonders auf den Abschnitt „Felder aktualisieren“:

http://gregmaxey.mvps.org/word_tip_pages/word_fields.html

Wie Sie sehen, ist es nicht unbedingt einfach, alle Felder in einem Dokument zu aktualisieren. Es scheint, dass Microsoft eine solche Funktion leicht hinzufügen könnte, aber selbst mit vielen Jahren unter der Brücke fehlt Word noch eine solche Funktion. Wenn Sie möchten, dass Microsoft die Funktion hinzufügt, können Sie das UserVoice-Forum besuchen und für eine solche Funktion stimmen:

https://word.uservoice.com/forums/304924-word-for-windows-desktop-application/suggestions/11685894

_Hinweis: _

Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der WordTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.

WordTips ist Ihre Quelle für kostengünstige Microsoft Word-Schulungen.

(Microsoft Word ist die beliebteste Textverarbeitungssoftware der Welt.) Dieser Tipp (13475) gilt für Microsoft Word 2007, 2010, 2013 und 2016.