見出し画像

Excel VBAユーザーのためのWord VBA 入門 「chapter 5. ParagraphFormatは段落書式を表す」

3-4. Rangeの特徴的なプロパティ」で、RangeオブジェクトのParagraphFormatプロパティに少しだけ触れました。
Range.ParagraphFormatプロパティなどで取得できる、段落書式を表すParagraphFormatオブジェクトについて、chapter 5では学習しましょう。


この記事は『Excel VBAユーザーのためのWord VBA入門』の、chapter 5 です。「はじめに」から「chapter 4. FontはExcelより多機能」までをお読みいただいていることを想定して記述しております。


5-1. ParagraphFormatの特徴的なプロパティ

ParagraphFormatは、名前のとおり段落書式を表すオブジェクトです。
Wordの[段落]ダイアログ(図5-1a)などで設定できる項目に対応したプロパティやメソッドが、ParagraphFormatオブジェクトには用意されています。

図5-1a


Alignmentプロパティで配置を取得/設定

ParagraphFormatオブジェクトのAlignmentプロパティ(図5-1b)を使うと、右揃え・中央揃えといった段落の配置を取得/設定できます。

図5-1b

▲ オブジェクトブラウザーの詳細ペイン1行目に「Property Alignment As WdParagraphAlignment」と表示されているとおり、Alignmentプロパティの戻り値はWdParagraphAlignment列挙型(図5-1c)に定義されている定数です。 「読み取り専用」と表示されていないことから、設定も可能なプロパティであることがわかります。

図5-1c

▲ オブジェクトブラウザーのメンバーペインに表示されている定数名の後ろのほうに注目すると、[段落]ダイアログ-[インデントと行間隔]タブの[配置]欄に対応する定数が用意されていることを推測できます。

以下のコードを実行すると、アクティブ文書の全段落が右揃えになります。

With ActiveDocument.Range.ParagraphFormat
    .Alignment = wdAlignParagraphRight
End With

「ActiveDocument.Range」でアクティブ文書の本文全体を表すRangeオブジェクトを取得できること(「3-2. Document.RangeメソッドでRangeを取得する」参照)、つづく「.ParagraphFormat」で、アクティブ文書本文の全段落の段落書式を表すParagraphFormatオブジェクトを取得していることを思い出してください(「3-4. Rangeの特徴的なプロパティ」参照)。

「ActiveDocument.Range.ParagraphFromat」で取得したParagraphFromatオブジェクトの、Alignmentpuropathiniプロパティに定数wdAlignParagraphRightを指定することで右揃えに設定しているのが上記のコードです。


LineSpacingRule・LineSpacingプロパティで行間を取得/設定

Wordでは、[段落]ダイアログ-[インデントと行間隔]タブの[行間]と[間隔](図5-1d)で、段落内の行高を設定できます。
ちなみに、Wordで[行間]と表示されているのは実際には行間ではなく、行と行の間のスペースに文字の高さを合計した、一般的には「行高」と呼ばれるものです。

図5-1d

この[段落]ダイアログの[行間]と[間隔]に対応したプロパティもあります。LineSpacingRuleプロパティとLineSpacingプロパティです。
次のコードを実行すると、アクティブ文書の全段落の行高が、固定値の24ポイントに設定されます。

With ActiveDocument.Range.ParagraphFormat
    .LineSpacingRule = wdLineSpaceExactly
    .LineSpacing = 24
End With

[段落]ダイアログの[行間]に対応するのがLineSpacingRuleプロパティ(図5-1e)です。

図5-1e

▲ オブジェクトブラウザーの詳細ペイン1行目に「Property LineSpacingRule As WdLineSpacing」と表示されているとおり、LineSpacingRuleプロパティの戻り値はWdLineSpacing列挙型(図5-1f)に定義されている定数です。

図5-1f

▲ オブジェクトブラウザーのメンバーペインに表示されている定数名の最後のほうに注目すると、[段落]ダイアログ-[インデントと行間隔]タブの[行間]欄(図5-1d)に対応する定数が用意されていることを推測できます。

図5-1d(再掲)

ParagraphFormatオブジェクトのLineSpacingRuleプロパティに、定数wdLineSpaceExactlyなどを設定した場合には、行高を表すLineSpacingプロパティ(図5-1g)にポイント数を指定できます。

図5-1g

▲ オブジェクトブラウザーの詳細ペイン1行目に「Property LineSpacing As Single」と表示されていることから、LineSpacingプロパティの戻り値がSingle型のデータであることがわかります。 「読み取り専用」表示がないことから、設定も可能なプロパティであることもわかります。


StyleプロパティでStyleオブジェクトを取得

ParagraphFormatオブジェクトには、スタイルを表すStyleオブジェクトを取得するための、Styleプロパティ(図5-1h)もあります。

以下のコードを実行すると、アクティブ文書の1文字目のスタイル名がメッセージボックスに表示されます。

With ActiveDocument.Range(0, 1).ParagraphFormat
    MsgBox .Style.NameLocal
End With
図5-1h

▲ オブジェクトブラウザーの詳細ペイン1行目に「Property Style As Variant」と表示されていることから、Styleプロパティの戻り値はVariant型と定義されていることがわかります。 但し、この後の「5-3. ParagraphFormatをローカルウィドウで確認しよう」で行うように、コードをステップ実行してローカルウィンドウを見れば、通常はStyleオブジェクト(図5-1i)を返すことがわかります。

図5-1i

▲ オブジェクトブラウザーのメンバーペインから、Styleオブジェクトには多数のプロパティ・メソッドが用意されていることがわかります。 
また、そのアイコンからNameLocalプロパティ(図5-1j)が既定メンバーであることがわかります。

図5-1j

▲ オブジェクトブラウザーの詳細ペイン1行目に「Property NameLocal As String」と表示されていることから、NameLocalプロパティの戻り値がString型のデータであることがわかります。


5-2. ParagraphFormatの特徴的なメソッド

ParagraphFormatオブジェクトには、メソッドも用意されています。特徴的なものをいくつか見ておきましょう。

ここから先は

3,975字 / 6画像

¥ 240

よろしければ、サポートをお願いします!!