ویلیام باید نام فایل را در جدولی وارد کند که در کادر متنی در پاورقی یک سند قرار دارد (الزام مشتری برای انجام این کار است). او میخواهد هر بار که سند را ذخیره میکند، نام فایل بهطور خودکار بهروزرسانی شود، یا حداقل زمانی که از «Save As» برای ایجاد یک فایل جدید استفاده میکند. ویلیام یک فیلد FILENAME را وارد کرده است، اما همچنان باید به خاطر داشته باشد که پاورقی را باز کرده و روی آن کلیک کرده و برای بهروزرسانی آن، F9 را فشار دهید. او ترجیح می دهد که این کار را به طور خودکار انجام دهد.
از لحاظ تاریخی، Word با این درک توسعه داده شد که اسناد شما در نهایت چاپ می شوند. (این قبل از روزهای انجام بیشتر کارها به صورت آنلاین، الکترونیکی بود.) یکی از مصنوعات مربوط به این درک تاریخی این است که ورد تا زمانی که به چاپ نروید، فیلدها را به روز نمی کند. بنابراین، وقتی کارهای دیگر را انجام می دهید، فیلدها به روز نمی شوند. مانند ذخیره یا استفاده از Save As.
با در نظر گرفتن این درک، چند کار وجود دارد که می توانید انجام دهید. اول این است که Word را فریب دهید تا فکر کند در حال چاپ هستید. با این حال، قبل از انجام این "فریب"، باید این مراحل را دنبال کنید:

شکل 1. گزینه های نمایش کادر محاوره ای Word Options.

شکل 2. تنظیمات چاپ در کادر محاوره ای Word Options.
- کادر محاوره ای Word Options را نمایش دهید. (در Word 2007 روی دکمه Office کلیک کنید و سپس Word Options را کلیک کنید. در Word 2010 و نسخه های بعدی، تب File را در نوار نمایش داده و سپس روی گزینه ها کلیک کنید.)
- در سمت چپ کادر محاوره ای روی Display کلیک کنید. (شکل 1 را ببینید.)
- مطمئن شوید که کادر بررسی بهروزرسانی فیلدها قبل از چاپ انتخاب شده است.
- روی Advanced در سمت چپ کادر گفتگو کلیک کنید.
- به پایین اسکرول کنید تا قسمت Print را ببینید. (شکل 2 را ببینید.)
- اطمینان حاصل کنید که کادر بررسی Allow Fields Containing Tracked Changes to Update Before Printing انتخاب شده باشد.
- برای ذخیره تغییرات روی OK کلیک کنید.
اکنون تنها کاری که باید انجام دهید زمانی که می خواهید فیلدها را به روز کنید این است که Ctrl+P را فشار دهید . این کادر محاوره ای چاپ (Word 2007) یا گزینه های چاپ (نسخه های بعدی Word) را نمایش می دهد. هنگامی که به این مرحله رسیدید، فیلدهای سند باید به روز شوند زیرا Word پیش بینی می کند که شما می خواهید چاپ کنید. میتوانید Esc را فشار دهید یا روی زبانه صفحه اصلی نوار کلیک کنید تا چاپ متوقف شود، و باید توجه داشته باشید که تمام فیلدهای سند شما بهروزرسانی میشوند. (خب، همه فیلدها به جز فیلد برای ایجاد یک TOC استفاده می شود. این یک مورد خاص است که در آن واقعاً باید چاپ کنید، نه اینکه فقط از پیش نمایش چاپ استفاده کنید.)
همچنین می توانید از یک ماکرو برای انجام این کارها استفاده کنید. ماکرو زیر تنظیمات را در کادر محاورهای Word Options تغییر نمیدهد، اما به اندازه کافی توالی چاپ را انجام میدهد که Word را فریب میدهد تا فیلدها را بهروزرسانی کند.
Sub UpdateAllFields()
With ActiveDocument
.PrintPreview
.ClosePrintPreview
End With
End Sub
در صورت تمایل، رویکرد کلان دیگری نیز وجود دارد که می توانید از آن استفاده کنید. این رویکرد هرگونه حقهبازی را دور میزند و در عوض، هر یک از «داستانهای» یک سند را طی میکند و هر فیلد موجود در آن داستانها را بهروزرسانی میکند. («داستان» بهتر است به عنوان یک لایه در سند شما مشاهده شود. سند اصلی یک داستان است، سرصفحه ها و پاورقی ها دیگر، گرافیک ها دیگر، و غیره.) در واقع از دو ماکرو در این رویکرد استفاده می شود. برای شروع فرآیند به روز رسانی، ماکرو UpdateAllFields را اجرا کنید.
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
اگر می خواهید اطلاعات بیشتری در مورد به روز رسانی فیلدها با استفاده از ماکروها بیابید، ممکن است بخواهید از این صفحه در سایت Greg Maxey بازدید کنید؛ به بخش تحت عنوان "به روز رسانی فیلدها" توجه ویژه ای داشته باشید:
http://gregmaxey.mvps.org/word_tip_pages/word_fields.html
همانطور که می توانید بگویید، به روز رسانی همه فیلدها در یک سند لزوما آسان نیست. به نظر می رسد که مایکروسافت می تواند به راحتی چنین قابلیتی را اضافه کند، اما حتی با وجود سال ها زیر پل، Word همچنان فاقد چنین قابلیتی است.