یکی از مزایای فیلدها این است که می توانید اطلاعات پویا را در سند خود وارد کنید. وقتی فیلد بهروزرسانی میشود، با هر اطلاعاتی که نسبت به فیلد در حال استفاده فعلی است جایگزین میشود. به عنوان مثال، می توانید از فیلد NumWords برای درج تعداد کلمات در سند استفاده کنید. وقتی فیلد بهروزرسانی میشود، با هر تعداد کلمه در سند جایگزین میشود.
اگر میخواهید تعداد کلمات یک بخش را بیابید و آن را به صورت پویا در یک سند قرار دهید، پس شانسی ندارید. هیچ فیلدی وجود ندارد که این اطلاعات را برگرداند. میتوانید با انتخاب متن در بخش و سپس انتخاب ابزار Word Count به صورت دستی آن را پیدا کنید، اما بدیهی است که این تمایل به داشتن مقداری که میتواند در سند شما درج شود و بهطور خودکار بهروزرسانی شود را برآورده نمیکند.
این بدان معناست که برای بدست آوردن تعداد کلمات مورد نظر باید به یک ماکرو تکیه کنید. اگر فقط می خواهید تعداد کلمات هر بخش از سند خود را بدانید، ماکرو زیر می تواند مفید باشد.
Sub WordCount()
Dim NumSec As Integer
Dim S As Integer
Dim Summary As String
NumSec = ActiveDocument.Sections.Count
Summary = "Word Count" & vbCrLf
For S = 1 To NumSec
Summary = Summary & "Section " & S & ": " _
& ActiveDocument.Sections(S).Range.Words.Count _
& vbCrLf
Next
Summary = Summary & "Document: " & _
ActiveDocument.Range.Words.Count
MsgBox Summary
End Sub
این به سادگی از هر بخش عبور می کند، تعداد کلمات آن بخش را تعیین می کند و اطلاعات خلاصه را در یک جعبه پیام نمایش می دهد. این روشی برای درج پویا اطلاعات در سند ارائه نمی دهد، اما نشان می دهد که چگونه می توانید تعداد کلمات یک بخش را پیدا کنید.
تغییر در تکنیک به شما امکان می دهد تا به طور خودکار تعداد کلمات را برای یک بخش خاص در محل یک نشانک در سند خود وارد کنید. فرض کنید شما یک نشانک به نام "WordCount" دارید که آن را تعریف کرده اید. این نشانک مکانی را مشخص می کند که در بخش دوم سند شما تعداد کلمات را می خواهید. ماکرو زیر تعداد کلمات را برای بخش مشخص شده تعیین می کند. و سپس متن را در محل نشانک وارد کنید.
Sub InsertWordCount()
Dim oRange As Word.Range
Dim sBookmarkName As String
Dim sTemp As String
sBookmarkName = "WordCount"
With ActiveDocument
sTemp = Format(.Sections(2).Range.Words.Count, "0")
Set oRange = .Bookmarks(sBookmarkName).Range
oRange.Delete
oRange.InsertAfter Text:=sTemp
.Bookmarks.Add Name:=sBookmarkName, Range:=oRange
End With
End Sub
ماکرو را می توان به راحتی از ماکروهای دیگر فراخوانی کرد، مانند ماکرو که هنگام باز کردن، ذخیره یا چاپ سند اجرا می شود. به این ترتیب تعداد کلمات در تمام زمانهای عادی که یک فیلد بهطور خودکار بهروزرسانی میشود، بهروزرسانی میشود.