Dawnは、ドキュメントの各ページのフッターに、ドキュメントの次のページに表示される最初の2つの単語を含めることを望んでいます。ページネーションが変更された場合は、もちろん、フッターが更新されて、次のページの上部にある2つの単語が反映されます。

これはいくつかの理由で難しい問題です。 Wordでは、STYLEREFフィールドを使用して、「辞書スタイル」のヘッダーまたはフッターをかなり簡単に作成できます。ただし、そのフィールドは常に、STYLEREFフィールドが表示されるページでのスタイルの最初または最後の使用法を参照します。 Dawnの場合、彼女は現在のページではなく、次のページの単語を求めています。

ただし、最大の問題は、ドキュメントで編集が行われるときに、フッターを動的に更新する必要があることです。 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:=wdStory     ' Go to beginning of document

' Use 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 = 1            ' Only 1 section now in document     For iPage = 1 To Selection.Information(wdNumberOfPagesInDocument) - 1         ' Figure 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)) < 65             ' Word counts punctuation, tabs, etc. as a word, so grab another word             Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend             sTemp = Trim(Selection)

Wend                  Selection.Collapse      ' Now at beginning of page again         Selection.MoveUp Unit:=wdParagraph         Selection.InsertBreak Type:=wdSectionBreakContinuous                  ' Set 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

マクロは最初にドキュメントからすべてのセクション区切りを削除し、次にドキュメントの各ページを調べて、それぞれの最初の2つの単語を把握します。次に、段落をステップパックし、連続したセクション区切りを追加し、最後にそのセクションのフッターを目的のテキストと等しくなるように設定します。フッターは、次のページの最初の2つの単語が後に続くsFText変数の内容と同じに設定されていることに注意してください。

このようなマクロは、目的のフッターへの「静的」アプローチを提供することを理解してください。つまり、ドキュメントに変更を加えた場合は、もう一度マクロを実行してフッターを更新する必要があります。

注:

このページ(または_WordTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_WordTips_は、費用効果の高いMicrosoftWordトレーニングのソースです。

(Microsoft Wordは、世界で最も人気のあるワードプロセッシングソフトウェアです。)このヒント(2835)は、Microsoft Word 2007、2010、2013、および2016に適用されます。