داون میخواهد پاورقی در هر صفحه سندش حاوی دو کلمه اول باشد که در صفحه بعدی سند ظاهر میشود. اگر صفحه بندی تغییر کند، مطمئناً پاورقی باید به روز شود تا هر دو کلمه را که در بالای صفحه زیر قرار دارند، منعکس کند.
این یک مشکل سخت به دلایل مختلف است. Word به شما اجازه می دهد تا با استفاده از فیلد STYLEREF به راحتی سرصفحه یا پاورقی "سبک دیکشنری" ایجاد کنید. با این حال، آن فیلد همیشه به اولین یا آخرین استفاده از یک سبک در صفحه ای که فیلد STYLEREF ظاهر می شود اشاره دارد. در مورد داون، او کلماتی را از صفحه بعد می خواهد، نه صفحه فعلی.
با این حال، بزرگترین مشکل، تمایل به به روز رسانی پاورقی به صورت پویا است، زیرا ویرایش در سند اتفاق می افتد. ما نتوانستیم راهی برای انجام این کار با ابزارهایی که Word ارائه می دهد پیدا کنیم. در صورت تمایل میتوانید یک ماکرو ایجاد کنید که پاورقیها را تنظیم میکند، اما نکتهای وجود دارد—چون هر صفحه پاورقی متفاوتی دارد، باید یک بخش استراحت به انتهای هر صفحه اضافه کنید. البته این بدان معناست که اگر بعداً متنی را اضافه یا حذف کردید، باید شکست های بخش را حذف کنید تا دوباره با انتهای هر صفحه مطابقت داشته باشند.
صدا پیچیده است؟ این می تواند باشد، به خصوص اگر سندی با صفحات زیاد داشته باشید، زیرا چنین سندی به بخش های زیادی نیاز دارد. با این حال، یک ماکرو شبیه به زیر به انجام آنچه می خواهید کمک می کند:
Sub FillFooter() Dim iPage As Integer Dim iSec As Integer Dim sFText As String Dim sTemp As String sFText = "See next page for this: " Selection.HomeKey Unit:=wdStoryGo to beginning of documentUse Find and Replace to get rid of all section breaks Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "^b" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False .MatchFuzzy = False End With Selection.Find.Execute Replace:=wdReplaceAll iSec = 1Only 1 section now in document For iPage = 1 To Selection.Information(wdNumberOfPagesInDocument) - 1Figure out first two words on "next page" Selection.GoTo what:=wdGoToPage, which:=wdGoToNext, Name:=iPage + 1 Selection.MoveRight Unit:=wdWord, Count:=2, Extend:=wdExtend sTemp = Trim(Selection) While Asc(Right(sTemp, 1)) < 65Word counts punctuation, tabs, etc. as a word, so grab another word Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend sTemp = Trim(Selection) Wend Selection.CollapseNow at beginning of page again Selection.MoveUp Unit:=wdParagraph Selection.InsertBreak Type:=wdSectionBreakContinuousSet text for page footer With ActiveDocument.Sections(iSec).Footers(wdHeaderFooterPrimary) .LinkToPrevious = False .Range.Text = sFText & sTemp End With iSec = iSec + 1 Next iPage End Sub
ماکرو ابتدا تمام شکست های بخش را از سند حذف می کند، سپس هر صفحه سند را مرور می کند و دو کلمه اول هر کدام را مشخص می کند. سپس یک پاراگراف را بسته بندی می کند و یک شکست پیوسته بخش اضافه می کند و در نهایت پاورقی را برای آن بخش با متن مورد نظر تنظیم می کند. باید توجه داشته باشید که پاورقی برابر با هر چیزی که در متغیر sFText است و دو کلمه اول صفحه بعد قرار می گیرد تنظیم شده است.
درک کنید که یک ماکرو مانند این یک رویکرد "ایستا" به فوتر مورد نظر ارائه می دهد. این بدان معناست که اگر در نهایت تغییراتی در سند خود ایجاد کنید، میخواهید یک بار دیگر ماکرو را برای بهروزرسانی پاورقیها اجرا کنید.