ブルースは、見出し1の段落が前のページの下1/3に該当する場合は、次のページの上部から開始することを希望しています。彼は、おそらくマクロを使用して、これを行う方法があるかどうか疑問に思います。

Wordには、段落の特性に基づいてページ付けを調整する機能が組み込まれています。 (見出しは段落の一種であるため、他の種類の段落と同じように簡単に見出しに適用されます。)[段落]ダイアログボックスの[改行]タブには、次の3つの設定が表示されます。

改ページ前。*この設定を選択すると、段落は常に次のページの先頭から始まります。

Widow / Orphan Control。*この設定を選択すると、段落に複数行が必要な場合に、段落の1行がページの下部または上部に残されないようになります。ほとんどの見出しは1行ですが、複数行が必要な場合に便利な設定です。

[次へ]を保持します。*この設定を選択すると、段落が後続の段落と一緒に表示されます。これは、見出しがそれに続く段落の少なくとも2行である必要があるため、見出しに最適です。 (これは、次の段落がWidow / Orphan Control用にフォーマットされていることを前提としています。)

これらのコントロールは素晴らしいものですが、通常はページの下3分の1に表示される場合、次のページへの見出しを強制するものがないため、ブルースのニーズを満たしません。これは、ブルースが彼が望むことを達成するための回避策を考え出す必要があることを意味します。

1つのアプローチは、2つの見出し1スタイルを定義することです。スタイルの1つは「通常」と見なすことができます。つまり、ドキュメントテキストの通常のフローに表示されます。もう1つのスタイルは、通常の見出し1に基づくことができますが、[改ページ前]設定(前述)を有効にすることができます。これらの2つのスタイルは非常に使いやすいでしょう。あなたがする必要があるのは、すべての通常の見出し1スタイルがドキュメント全体で使用されていることを確認することです。次に、印刷する前に、一度に1ページずつ手動でドキュメントを確認し、ページから離れすぎて好みに合わない見出しに2番目の見出し1スタイルを適用できます。それらは自動的に次のページの上部に移動され、Wordはドキュメントを再ページングし、移動する必要のある見出しをスキャンし続けることができます。

逆のアプローチは、見出し1のすべての段落の前に実際に手動改ページを配置することです。次に、改ページと見出し1の段落を選択すると、後ですべての見出しに使用できる構成要素として定義できます。 (ビルディングブロックを挿入してから、実際の見出し段落のテキストを変更するだけです。)印刷する前に、手動でドキュメントを確認し、見出しを前のページに移動できる場合は、すぐにある改ページを削除します。見出し段落の前。 Wordは見出しを前のページに移動し、ドキュメントを再ページングし、移動可能な見出しをスキャンし続けることができます。

ページの下3分の1が10行のテキストより深くない場合は、見出しにかなり斬新なアプローチを使用できます。ドロップキャップでフォーマットします。ドロップキャップの深さは最大10行です。あなたがする必要があるのは、「ドロップされた」文字が非常に非常に薄いものであることを確認することです。たとえば、大文字のIを使用してみてください。単一の文字を非常に小さいポイントサイズとしてフォーマットし、その色を白にします。次に、文字を選択して、10行のドロップキャップにします。ドロップキャップ全体がページに収まらない場合、Wordはそれを次のページに移動します。必要なものを正確に取得するには、いくつかのフォーマット特性を試してみる必要があるかもしれませんが、手動処理を必要としない唯一の潜在的な回避策です。

マクロを使用して書式設定を行う場合、最も実用的なアプローチは、ドキュメントの完成後にマクロで見出し1段落の位置を調整することです。アイデアは、マクロがドキュメントの最初から検索し、見出し1の段落を探すことです。見つかったものがページの高さの66%を超えて配置されている場合は、改ページを挿入して見出しを次のページに移動します。次のマクロは、これらすべてのタスクを実行します。

Sub AdjustHeading()

Dim CursorVert As Single     Dim Pgheight As Single     Dim styleName As String

styleName = "Heading 1"

If ActiveDocument.Styles(styleName).ParagraphFormat.PageBreakBefore Then         MsgBox styleName & " has 'Page break before' set. Run aborted"

Exit Sub     End If     Selection.HomeKey unit:=wdStory     With Selection.Find         .ClearFormatting         .Style = ActiveDocument.Styles(styleName)

.Text = ""

.Replacement.Text = ""

.Forward = True         .Wrap = wdFindStop     End With     Do While Selection.Find.Execute         If Asc(Selection.Range.Characters(1)) = 12 Then             Selection.MoveStart unit:=wdCharacter, Count:=1         End If         With ActiveDocument.Sections(Selection.Information(wdActiveEndSectionNumber)).PageSetup             CursorVert = Selection.Information(wdVerticalPositionRelativeToPage) - .TopMargin             Pgheight = .PageHeight - .TopMargin - .BottomMargin         End With         If CursorVert > Selection.Style.ParagraphFormat.SpaceBefore Then             If CursorVert / Pgheight > 0.66 And Len(Selection.Range) > 1 Then                 Selection.End = Selection.Start                 Selection.TypeText Chr(12)

End If         End If         Selection.Start = Selection.End     Loop End Sub

このマクロが正しく動作するためには、見出し1のスタイルに[改ページ前]属性が設定されていないことを確認する必要があります。

マクロは、セクションごとにページの高さが異なるドキュメントに対応するために、現在のセクションのページの高さを決定します。

ページの高さは、用紙の高さから上下の余白を差し引いて計算されます。

注:

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

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

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