فیل اشاره می کند که Word در بزرگ کردن خودکار حرف اول جملات عالی است. با این حال، او داستان های محاوره ای می نویسد، به این معنی که او جملات زیادی دارد که با علامت نقل قول شروع می شوند. Word به طور خودکار حرف اول را در یک نقل قول که یک جمله را شروع می کند بزرگ نمی کند، بنابراین فیل به این فکر می کند که آیا تنظیماتی وجود دارد که بتواند این مشکل را اصلاح کند.
هیچ تنظیمی در Word وجود ندارد که بتواند این وضعیت را مدیریت کند. با این حال، می توانید به راحتی یک ماکرو ایجاد کنید تا مطمئن شوید که کاراکترهای مورد نظر بزرگ هستند. ماکرو می تواند بر این واقعیت تکیه کند که می توانید از Find and Replace برای انجام کار برای شما استفاده کنید. با فرض اینکه دیالوگ رفت و برگشت شما منجر به نقل قول هایی می شود که از پاراگراف های خودشان شروع می شوند، شما فقط باید به دنبال یک بازگشت سخت و به دنبال آن یک علامت نقل قول و سپس یک حرف باشید. این می تواند به راحتی با بازگشت سخت، علامت نقل قول و نسخه بزرگ حرف جایگزین شود. در اینجا نمونه ای از ماکرو است که این کار را انجام می دهد:
Sub QuoteCaps1()
Dim J As Integer
Dim sFind As String
Dim sRep As String
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
For J = 97 To 122
sFind = "^p" & Chr(34) & Chr(J)
sRep = "^p" & Chr(34) & Chr(J - 32)
With Selection.Find
.Text = sFind
.Replacement.Text = sRep
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Next J
End Sub
قلب ماکرو حلقه For...Next است که از میان تمام حروف کوچک (کدهای ASCII 97 تا 122) عبور میکند و رشتههای جستجو و جایگزینی را کنار هم قرار میدهد. رشته جستجو (ذخیره شده در متغیر sFind) شامل بازگشت سخت (^p) به دنبال علامت نقل قول و سپس کاراکتر کوچک است. رشته جایگزین (ذخیره شده در متغیر sRep) یکسان است، با این تفاوت که از یک کاراکتر بزرگ استفاده می کند که با کم کردن 32 از مقدار ASCII کاراکتر کوچک محاسبه می شود.
ماکرو به طور موثر 26 عملیات یافتن و جایگزینی را در سند شما انجام می دهد، اما آنها را خیلی سریع انجام می دهد. اگر سند شما کوتاه است، به نظر می رسد ماکرو تقریباً بلافاصله اجرا می شود. اگر سند شما بسیار طولانیتر است، ممکن است چند لحظه طول بکشد تا اجرا شود.
با این حال، شاید دیالوگ شما همیشه از ابتدای یک پاراگراف شروع نشود، مانند مثال زیر:
Morris nodded his head. "of course it works that way."
اگر میخواهید که ماکرو حروف کوچک را به دنبال هر علامت نقل قول ابتدایی بگیرد، تنها کاری که باید انجام دهید این است که ماکرو را تغییر دهید تا «^p» را که به ابتدای متغیرهای sFind و sRep اضافه میشود، حذف کنید. با این حال، اگر گفتگوی شما شبیه به این باشد، ممکن است عواقب ناخواسته ای داشته باشد:
Morris lunged across the desk. "where is she," he demanded, "and is she OK?"
در این شرایط، کلان هم «کجا» و هم «و» را با حروف بزرگ مینویسد، اگرچه احتمالاً نمیخواهید «و» با حروف بزرگ باشد. اگر نثر شما ممکن است چنین استفادهای داشته باشد، به یک کلان پیچیدهتر نیاز دارید. ، مانند موارد زیر:
Sub QuoteCaps2()
Dim J As Integer
Dim K As Integer
Dim sFind As String
Dim sRep As String
Dim sTerm As String
sTerm = ".!?"
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
For J = 97 To 122
sFind = "^p" & Chr(34) & Chr(J)
sRep = "^p" & Chr(34) & Chr(J - 32)
With Selection.Find
.Text = sFind
.Replacement.Text = sRep
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Next J
For J = 1 To Len(sTerm)
For K = 97 To 122
sFind = Mid(sTerm, J, 1) & " " & Chr(34) & Chr(K)
sRep = Mid(sTerm, J, 1) & " " & Chr(34) & Chr(K - 32)
With Selection.Find
.Text = sFind
.Replacement.Text = sRep
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Next K
Next J
End Sub
این نسخه از ماکرو همچنان از حروف نقلقولشده در ابتدای پاراگرافها عبور میکند و با حروف بزرگ مینویسد، اما سپس شروع به جستجو برای هر نقل قولی میکند که جملات را شروع میکند. به استفاده از رشته sTerm توجه کنید که شامل کاراکترهایی است که می توانند جملات را پایان دهند - نقطه، علامت تعجب و علامت سوال. (در صورت تمایل می توانید تعداد کاراکترهای پایان دهنده جمله را افزایش دهید.) ماکرو از هر یک از این کاراکترها عبور می کند و متغیرهای sFind و sRep را که از کاراکتر، یک فاصله، یک علامت نقل قول و یک حروف کوچک این ها با معادل های بزرگ جایگزین می شوند.
همانطور که می توانید تصور کنید، اجرای این ماکرو فقط کمی بیشتر طول می کشد. چرا؟ زیرا در جایی که اولین ماکرو 26 عملیات پیدا و جایگزینی انجام داد، این یکی حداقل 104 عملیات را انجام می دهد، و اگر آنچه را در متغیر sTerm است طولانی کنید، هر کاراکتر جدید 26 عملیات یافتن و جایگزینی اضافی اضافه می کند.