(Wordマクロ)改ページと改行設定の仕方
改ページと改行タブ内の設定をマクロで制御します。その他の段落設定については、逆引き段落設定を参照してください。
このページで解説する項目は次の通りです。上から順番に解説します。
プロパティ
それぞれの設定に紐づくプロパティは以下の通りです。
プロパティ | 説明 |
---|---|
WidowControl | 改ページ時1行残して段落を区切らない |
KeepWithNext | 次の段落と分離しない |
KeepTogether | 段落を分割しない |
PageBreakBefore | 段落前で改ページする |
NoLineNumber | 行番号を表示しない |
Hyphenation | ハイフネーション |
TextboxTightWrap | (テキストボックス)文字列の折り返し |
①~⑤の設定
それぞれのプロパティにTrueまたはFalseを設定します。
使用例
①改ページ時1行残して段落を区切らない
Public Sub 改ページ時1行残して段落を区切らない() Selection.ParagraphFormat.WidowControl = False End Sub
注意点として、WindowではなくWidowです。
②次の段落と分離しない
Public Sub 次の段落と分離しない設定をオンにする() ActiveDocument.Paragraphs.KeepWithNext = True End Sub
③段落を分割しない
次の例は、すべての段落の段落分割設定をオンにする場合の使用例です。
Public Sub すべての段落の段落分割設定をオンにする() ActiveDocument.Paragraphs.KeepTogether = True End Sub
④段落前で改ページする
Public Sub 段落前で改ページする設定をオンにする() ActiveDocument.Paragraphs.PageBreakBefore = True End Sub
⑤行番号を表示しない
Public Sub 行番号を表示しない設定をオンにする() ActiveDocument.Paragraphs.NoLineNumber = True End Sub
⑥ハイフネーションの設定
ハイフネーションのみ、定数がHyphenationとなっている関係で、ほかのものと設定の仕方が逆になります。
すなわち、Trueを設定すると、ハイフネーションありと見なされ、ハイフネーションなしのチェックが外れます。逆にFalseを設定すると、ハイフネーションなしと見なされ、ハイフネーションなしのチェックが入ります。
使用例
Public Sub ハイフネーションなしのチェックを外す() Selection.Paragraphs.Hyphenation = True End Sub
⑦(テキストボックス)文字列の折り返し
テキストボックスを選択している場合のみ設定できます。TextboxTightWrapで指定できる定数は以下の通りです。
定数 | 説明 |
---|---|
wdTightAll | すべての行を折り返す |
wdTightFirstAndLastLines | 最初と最後の行のみ折り返す |
wdTightFirstLineOnly | 最初の行のみ折り返す |
wdTightLastLineOnly | 最後の行のみ折り返す |
wdTightNone | すべての行を折り返さない |
なお、ここでいう「文字列の折り返し」は、テキストボックス内部の文字列ではなく、テキストボックス周囲の文字列です。また、この設定はテキストボックスが「塗りつぶしなし」であり、かつテキストボックスが「外周」または「内周」の場合のみ有効に働きます。
この設定、日本だけでなく、世界的にみても全然使われていないのか、情報がほとんど見つかりませんでした。特に、TextboxTightWrapの定数に至ってはまともな情報がなく、この部分をマクロで設定している人は世界で極僅かなのではないかという疑念があります。
下図は、テキストボックスの文字列の折り返しが「最初と最後の行」の場合の例です。少々わかりにくいですが、テキストボックス内部に、テキストボックス周囲の文字列が食い込んでいます。
使用例
Public Sub 文章全体のテキストボックスの文字列の折り返しをなしにする() Dim shp As Shape For Each shp In ActiveDocument.Shapes If shp.Type = msoTextBox Then shp.TextFrame.TextRange.ParagraphFormat.TextboxTightWrap = wdTightNone End If Next shp End Sub
上の使用例では、テキストボックスの設定を書き換える必要があるため、複雑な工程を踏んでいます。これについてはまた別の記事で詳述します。
最近のコメント