کرت فهرستی از کلماتی دارد که باید در یک سند نسبتا طولانی با رنگ قرمز نشان داده باشد. جستجوی هر یک از کلمات با استفاده از Find and Replace کار می کند، اما بسیار خسته کننده است. کرت متعجب است که آیا راهی (شاید با استفاده از یک ماکرو) برای پردازش سند برای هر یک از کلمات موجود در لیست وجود دارد یا خیر.
برای انجام این کار، واقعاً بهتر است به یک کلان روی آورید. چرا؟ زیرا یک ماکرو می تواند به سرعت مراحل خسته کننده را انجام دهد. به عنوان مثال، فرض کنید که میخواهید کلمات ویدیو ، عنصر ، نمودار ، و دکمه (چهار کلمه جداگانه) را با یک کلمه، اما به رنگ قرمز جایگزین کنید. میتوانید از یک ماکرو مانند زیر استفاده کنید:
Sub ChangeWordColors()
Dim vWords As Variant
Dim sWord As Variant
vWords = Array("video", "element", "chart", "button")
For Each sWord In vWords
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
Selection.Find.Replacement.Font.Color = wdColorRed
With Selection.Find
.Text = sWord
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Next sWord
End Sub
ماکرو ابتدا چهار کلمه را به آرایه ای به نام vWords اختصاص می دهد. سپس هر یک از عناصر آرایه از بین رفته و عملیات Find and Replace انجام می شود. از آنجایی که این عملیات ویژگی .MatchWholeWord را روی True قرار می دهد، آنگاه فقط کل کلماتی که با این چهار مطابقت دارند مطابقت داده می شوند. (به عبارت دیگر، جستجوی عنصر منجر به تطبیق عناصر نمی شود .
اشکال چنین ماکرویی این است که اگر می خواهید از مجموعه کلمات متفاوتی استفاده کنید، باید ماکرو را طوری ویرایش کنید که آن کلمات (یا عبارات) دیگر را به آرایه اختصاص دهد. در عوض، ممکن است بخواهید کلمات را در یک فایل متنی ذخیره کنید. این کار را می توان با تغییر ماکرو به شرح زیر انجام داد:
Sub ChangeWordColorsFile()
Dim sFile As String
Dim sTemp As String
sFile = "C:UsersabcdDesktopMyWords.txt"
Open sFile For Input As 1
While Not EOF(1)
Line Input #1, sTemp
sTemp = Trim(sTemp)
If sTemp > "" Then
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
Selection.Find.Replacement.Font.Color = wdColorRed
With Selection.Find
.Text = sTemp
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
End If
Wend
Close #1
End Sub
این نسخه از ماکرو به فایلی به نام MyWords.txt متکی است. در نزدیکی ابتدای ماکرو می توانید ببینید که این نام فایل (در واقع یک مسیر کامل برای این نام فایل) به متغیر sFile اختصاص داده شده است. این فایل است که باز می شود و هر بار یک خط خوانده می شود تا مشخص شود چه کلماتی باید جستجو شوند و به رنگ قرمز تغییر پیدا کنند. اگر میخواهید نحوه عملکرد ماکرو را تغییر دهید، فقط آنچه را که در فایل MyWords.txt وجود دارد را تغییر دهید. فقط مطمئن شوید که فقط یک کلمه یا عبارت را در هر خط از فایل قرار دهید.