لیزا به راهی نیاز دارد تا دو کلمه آخر را در تمام پاراگراف های یک سند پیدا کند و فاصله بین آن کلمات را با یک فاصله بدون شکست جایگزین کند. او متعجب است که آیا این امکان با استفاده از Find and Replace وجود دارد یا خیر.
ساده ترین راه برای انجام این کار بدون استفاده از ماکرو، تکیه بر قابلیت های wildcard Find and Replace است. نکته کلیدی برای انجام این کار این است که به خاطر داشته باشید که واقعاً نیازی به شناسایی دو کلمه آخر در چیزی که پیدا می کنید ندارید - فقط باید کلمه آخر را با فضای قبلی آن مشخص کنید. این مراحل را دنبال کنید:

شکل 1. تب Replace از کادر محاوره ای Find and Replace.
- Ctrl+H را فشار دهید . Word تب Replace را در کادر گفتگوی Find and Replace نمایش می دهد.
- اگر روی دکمه بیشتر قابل مشاهده است کلیک کنید. (شکل 1 را ببینید.)
- تیک Use Wildcards را انتخاب کنید.
- در کادر Find What، این را وارد کنید: ( )([0-9A-Za-z~-]{1,})([.!?:])(^13)
- در کادر Replace With این را وارد کنید: ^s234
- روی Replace All کلیک کنید.
این که چگونه این واقعا کار می کند ممکن است کمی توضیح داشته باشد. ترفند در اینجا چیزی است که شما به دنبال آن هستید که در مرحله 4 مشخص شده است. هر عنصری که جستجو می شود با (پرانتز) احاطه شده است، بنابراین انتخاب آنها و مراجعه به آنها در کادر Replace With آسان است (مرحله 5). چهار عنصر در کادر Find What (دوباره با پرانتز احاطه شده است) به شرح زیر است:
- ( )
- ([0-9A-Za-z~-]{1,})
- ([.!?:])
- (^13)
اولین عنصر یک فضای واحد است. دومی هر تعداد رقم، حروف یا خط تیره است. (آخرین قسمت این عنصر است —{1,}— که مشخص می کند هر تعداد رقم، حروف یا خط تیره می تواند وجود داشته باشد.) این عنصری است که کلمه را در انتهای پاراگراف مشخص می کند و شامل امکان وجود خط تیره در کلمه به طوری که کلمات مرکب به عنوان یک کلمه واحد در نظر گرفته شوند. عنصر سوم هر یک از علائم نگارشی نشان داده شده است و عنصر چهارم نشانگر واقعی پایان پاراگراف است.
مشخصات Replace With (مرحله 5) به سادگی عنصر اول (فضا) را با یک فضای بدون شکست جایگزین می کند و سپس عناصر دوم، سوم و چهارم را در جای خود قرار می دهد.
لازم به ذکر است که چند سناریو وجود دارد که در آنها این رویکرد Find and Replace کار نخواهد کرد. اولاً، اگر پاراگراف شما دارای فاصله های انتهایی باشد، بین علامت نگارشی و نشانگر انتهای پاراگراف، کار نمی کند. می توانید قبل از انجام یافتن و جایگزینی بالا، از Find and Replace برای خلاص شدن از شر آنها در سراسر سند خود استفاده کنید.
حالت دوم که کار نمی کند این است که پاراگراف شما با علائم نگارشی مرکب به پایان می رسد، مانند نقطه به دنبال یک علامت نقل قول یا یک علامت نقل قول به دنبال دو نقطه. انتهای پاراگراف، و باید یکی از چهار علامت نگارشی مشخص شده باشد.
حالت سومی که کار نمی کند این است که در کلمه پایانی پاراگراف نوعی علامت نگارشی وجود داشته باشد. به عنوان مثال، اگر کلمه پایانی در واقع عددی مانند 1234 باشد، درج کاما تطابق را متوقف می کند. این موضوع را میتوان با گنجاندن کاما در عنصر دوم مورد جستجو حل کرد، اما تعداد دفعاتی که ممکن است این اتفاق بیفتد به اندازهای کوچک به نظر میرسد که در مراحل بالا اجازه آن را ندادم.
اگر یک رویکرد مبتنی بر کلان را به جایگزینی ترجیح می دهید، ممکن است از ماکرو زیر استفاده کنید:
Sub LastTwo()
Dim p As Paragraph
Dim J As Integer
Dim K As Integer
Dim sTemp As String
For Each p In ActiveDocument.Paragraphs
J = p.Range.Words.Count
For K = J To 1 Step -1
sTemp = p.Range.Words(K)
If Right(sTemp, 1) = " " Then
p.Range.Words(K) = RTrim(sTemp) & Chr(160)
K = 1
End If
Next K
Next p
End Sub
ماکرو از هر پاراگراف سند شما عبور می کند و سپس از طریق کلمات موجود در پاراگراف ها به عقب برمی گردد. به دنبال اولین کلمه ای می گردد که حاوی یک فضای انتهایی است، و سپس آن فاصله را با یک فضای بدون شکست جایگزین می کند.
یک چیز جالب در مورد این ماکرو وجود دارد - ممکن است آن طور که انتظار می رود در همه سیستم ها کار نکند. اگر پس از اجرای آن، یک فضای بدون شکست دریافت نکردید اما در عوض یک "تقاطع" کوچک بین دو کلمه آخر مشاهده کردید، به سادگی Chr(160) را در کد با Chr(202) جایگزین کنید. اگر Word شامل یک شمارش تعریف شده برای یک فضای بدون شکست باشد، آسان تر است، اما اینطور نیست. درعوض، باید به کد ASCII برای فضایی بدون شکست تکیه کنید، که به نظر نمی رسد در همه سیستم ها یکسان باشد.