Simao چند ماکرو دارد که جستجو و جایگزینی زیادی انجام می دهند. با این حال، هنگامی که ماکروها به پایان رسید، او مایل است جستجو را بازیابی کند و پارامترها را به پارامترهایی که درست قبل از اجرای ماکروها در کار بودند جایگزین کند. در ابتدای هر ماکرو و سپس آنها را در پایان بازیابی کنید.
همانطور که Simao اشاره می کند، "عمل خوب" این است که ماکرو شما هر چیزی را که تغییر می دهد به حالت قبل از اجرای ماکرو برگرداند. به این ترتیب ماکرو شما هیچ چیز دیگری را که کاربر ممکن است انجام دهد خراب نمی کند.
ایده در اجرای این عمل این است که مراحل زیر را دنبال کنید:
- متوجه شوید که چه چیزی ماکرو شما تغییر خواهد کرد
- متغیرهایی را ایجاد کنید که در آن همه ویژگی هایی که تغییر می کنند ذخیره شوند
- خصوصیات را در متغیرهایی که ایجاد کرده اید ذخیره کنید
- کار میکنی
- آن ویژگی ها را از متغیرهایی که قبلاً در مرحله 3 تنظیم کرده اید بازیابی کنید
کلید اینجا مرحله 1 است. اگر نمی توانید بفهمید که چه چیزی ماکرو شما تغییر خواهد کرد، نمی توانید مراحل دیگر را ادامه دهید. با انجام عملیات یافتن و جایگزینی، تعدادی از اشیاء وجود دارند که می توانند درگیر شوند و هر کدام از آنها دارای تعدادی ویژگی خوب است.
یک راه آسان برای فهمیدن چیزها این است که به سادگی یک ماکرو را ضبط کنید که عملیات Find and Replace را انجام می دهد و سپس به کدی که ضبط کننده تولید می کند نگاه کنید. به عنوان مثال، جستجوی کلمه "the" و جایگزینی آن با کلمه "THE" را ضبط کردم. وقتی ضبط کننده ماکرو را متوقف کردم و به آنچه که ایجاد کرد نگاه کردم، این قسمت مربوط به آنچه دیدم است:
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "the"
.Replacement.Text = "THE"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = True
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
من به دو خط اول این کد در یک لحظه برمی گردم اما به تمام خطوط دیگر تولید شده نگاه می کنم. با شی .Find، یک پاسسل کامل از ویژگی ها مشخص می شود. این ویژگی ها مربوط به تنظیمات در Find هستند. بنابراین، شما اکنون لیستی از متغیرهایی دارید که باید حداقل تعریف کنید، بنابراین می توانید تنظیمات هر یک از این ویژگی ها را ذخیره کرده و بعداً آنها را بازیابی کنید.
اکنون به آن دو خط اول کد بازگردیم. آنها مگس اصلی را در پماد نشان می دهند. روش ClearFormatting از شر هر قالب بندی تعریف شده برای عملیات Find and Replace خلاص می شود. برای اینکه ببینم اگر قالب بندی را در Find and Replace تعریف کنم چه ویژگی هایی تحت تأثیر قرار می گیرند، دوباره یک ماکرو از همان عملیات Find and Replace ضبط کردم، اما این بار مشخص کردم که متن جایگزین باید پررنگ و خط دار باشد. همه چیزهایی که ضبط کننده ضبط می کرد یکسان بود، به استثنای چهار خط کد که درست بعد از خط دوم نشان داده شده در بالا اضافه شد:
With Selection.Find.Replacement.Font
.Bold = True
.Underline = wdUnderlineSingle
End With
اینها خطوطی هستند که قالب بندی را که می خواستم در جایگزینی استفاده کنم مشخص می کند. در کد قبلی، ضبط کننده ماکرو تمام ویژگی های شی .Find را نشان می دهد. در این حالت، تنها چیزی که ثبت میشود، چیزی است که من تغییر میدهم، که اتفاقاً در شی .Font است. متأسفانه، اشیاء دیگری نیز وجود دارند که میتوان آنها را به جز شیء .Font--.Paragraph، .Tabs، .Language، و on و on مشخص کرد. به علاوه، نه تنها میتوان این موارد را برای شی .Find، بلکه برای شی .Replacement نیز تنظیم کرد. این پتانسیل صدها ملک است که باید ذخیره و بازسازی شوند.
غیر ممکن به نظر می رسد؟ احتمالا غیرممکن نیست، اما قطعا دلهره آور است. با استفاده از روش ضبط ماکروها، باید یک Find (یا جایگزینی؛ مفاهیم یکسان است) انجام دهید و قالب بندی هر ویژگی قالب بندی ممکنی را که می توان پیدا کرد یا جایگزین کرد، تغییر داد. اگر در انجام این کار موفق باشید، در نهایت به لیست کاملی خواهید رسید. برای مثال، در اینجا کد تولید شده برای شی Selection.Find.Font است:
With Selection.Find.Font
.Size = 14
.Bold = True
.Underline = wdUnderlineSingle
.StrikeThrough = True
.DoubleStrikeThrough = False
.Hidden = True
.SmallCaps = True
.AllCaps = False
.Color = wdColorRed
.Superscript = True
.Subscript = False
End With
به عبارت دیگر، 11 ویژگی مختلف برای ذخیره و تنظیم مجدد. اما صبر کن! چیزهای بیشتری وجود دارد! (به نظر می رسد تبلیغات چاقوی گینسو، درست است؟) من هیچ تغییری در تب Advanced در کادر گفتگوی Find Font ایجاد نکردم، که بدون شک این لیست را گسترش می داد. شما می توانید با نگاه کردن به اسناد مایکروسافت برای ویژگی های آن شی، ایده ای از تعداد کل ویژگی های شی .Font بدست آورید. سمت چپ صفحه.)
https://docs.microsoft.com/en-us/office/vba/api/word.font
شما بیش از 50 ویژگی را در آنجا خواهید دید. و، به یاد داشته باشید، یک شی .Font جداگانه وجود دارد که متعلق به شی .Replacement است، و اشیاء زوج مشابهی برای سایر عناصر قالب بندی وجود دارد (.Paragraph، .Tabs، و غیره، و غیره. ).
قطعا دلهره آور است.
هنگامی که متوجه شدید که هنگام انجام یک عملیات Find and Replace بر چند ویژگی تأثیر میگذارد، متوجه میشوید که چرا بسیاری از افراد از ذخیره و بازیابی تنظیمات قالببندی برای عملیات صرفنظر میکنند. شدنی است؛ هر چند این یک تعهد کوچک نیست.