Felder automatisch aktualisieren (Microsoft Word)
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:
-
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.)
-
Klicken Sie links im Dialogfeld auf Anzeigen. (Siehe Abbildung 1.)
-
Stellen Sie sicher, dass das Kontrollkästchen Felder vor Drucken aktualisieren aktiviert ist.
-
Klicken Sie links im Dialogfeld auf Erweitert.
-
Scrollen Sie nach unten, bis Sie den Abschnitt Drucken sehen. (Siehe Abbildung 2.)
-
Stellen Sie sicher, dass das Kontrollkästchen Felder mit nachverfolgten Änderungen vor dem Drucken aktualisieren zulassen aktiviert ist.
-
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.