پیروی می کند
چارلز می داند که Word به شما امکان می دهد با استفاده از سبک ها را پیدا کرده و جایگزین کنید (یک سبک را جستجو کنید و آن را با سبک دیگری جایگزین کنید). او می خواهد سبکی را پیدا کند و جایگزین آن شود که پس از سبک دیگر اتفاق می افتد. به عنوان مثال، او می خواهد هر پاراگراف را که بعد از عنوان (1، 2، 3 یا 4) آمده است جستجو کند و سبک آن پاراگراف را با سبک دیگری جایگزین کند. انجام این کار به صورت دستی در یک سند 400 صفحه ای کافی است تا او را با کسالت از صخره بیرون بکشد!
هیچ راهی برای انجام این کار با استفاده از قابلیت Find and Replace داخلی Word وجود ندارد. با این حال، این را می توان با استفاده از یک ماکرو انجام داد. تنها کاری که ماکرو باید انجام دهد این است که از هر پاراگراف در سند عبور کند و اگر پاراگراف با سبک عنوان استایل بندی شده است، سبک عنوان پاراگراف را که به دنبال آن است تغییر دهید. پیاده سازی ماکرو آسان است زیرا هیچ محتوایی را حذف یا اضافه نمی کند، فقط سبک پاراگراف را تنظیم می کند.
Sub ConvertAfterHeads() Dim J As Long Dim dStart As Date Dim dFinish As Date Dim lPar As Long Dim lChg As Long Dim sTemp As String dStart = Time() lChg = 0 lPar = ActiveDocument.Paragraphs.Count For J = 1 To lPar - 1 If ActiveDocument.Paragraphs(J).Style Like "Heading [1-4]" Then ActiveDocument.Paragraphs(J + 1).Style = "MyNewStyle" lChg = lChg + 1 End If If J Mod 500 = 0 Then DoEvents StatusBar = J & " of " & lPar & " (" & Format(J / lPar, "##0.00%") & ")" Next J dFinish = Time() sTemp = "Start: " & Format(dStart, "hh:mm:ss") & vbCr sTemp = sTemp & "Finish: " & Format(dFinish, "hh:mm:ss") & vbCr sTemp = sTemp & "Elapsed: " & Format(dFinish - dStart, "hh:mm:ss") & vbCr sTemp = sTemp & "Total Paragraphs: " & lPar & vbCr sTemp = sTemp & "Changed Paragraphs: " & lChg MsgBox sTemp End Sub
قلب این ماکرو حلقه For...Next است که از هر پاراگراف (به جز آخرین مورد) عبور می کند و اگر سبک پاراگراف هر عنوانی باشد، از 1 تا 4، یک تغییر سبک ایجاد می کند. باید تغییری در آن ایجاد کنید. ماکرو برای بازتاب سبک جدید دلخواه شما؛ فقط "MyNewStyle" را به نام سبک مورد نظر خود در داخل نقل قول تغییر دهید. وقتی ماکرو کامل شد، خلاصهای از مدت زمان ماکرو و تعداد تغییرات ایجاد شده را خواهید دید.
در آزمایش این ماکرو، آن را روی یک سند 450 صفحهای اجرا کردم که بیش از 9500 پاراگراف داشت. تکمیل ماکرو کمتر از 15 دقیقه طول کشید. سرعت ماکرو در سیستم شما به عوامل مختلفی از جمله سرعت رایانه و ویژگی های سند شما بستگی دارد.
نکتهای که در اجرای ماکرو روی چنین سند طولانیای متوجه شدم این است که خیلی سریع شروع میشود، اما همانطور که پاراگرافهای بعدی را در سند پردازش میکند (مثلاً بعد از حدود پاراگراف شماره 3000 یا بیشتر)، سرعت ماکرو بهطور محسوسی شروع به کند شدن میکند. این مربوط به نحوه دسترسی به هر پاراگراف در مجموعه پاراگراف (با استفاده از متغیر J) است و جزئی از کار در هر پاراگراف به این روش است. به همین دلیل است که من خطی را اضافه کردم که DoEvents را فراخوانی میکند — در صورتی که میخواهید قبل از تکمیل، با فشار دادن Ctrl+C از ماکرو خارج شوید .