Word VBAで選択範囲の最初の段落&最後の段落を取得する方法


underline

photo credit: owly9 Studying via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

初心者向けWord VBAを使って便利な入力ツールを作る方法をお伝えしています。

前回の記事はこちら。

Word VBAを使うなら知っておくべき「段落」の話とその操作方法
初心者向けのWord VBAのシリーズということで便利な文字を入力するマクロの作り方をお伝えしています。Word VBAで段落を表すParagraphオブジェクトとその操作方法についてお伝えしていきます。

Word VBAでの段落とその操作方法についてお伝えしました。

今回は、その続きになりますが、Word VBAで選択範囲の中から最初の段落と最後の段落を取得する方法をお伝えします。

つまり、SelectionオブジェクトからParagraphコレクションを取得して、その最初と最後のParagraphオブジェクトを取得するということですね。

また、段落内のテキストの取得をする方法も押さえておきたいですね。

では、行ってみましょう!

スポンサーリンク

選択範囲の段落を取得する

選択範囲を表すオブジェクトはSelectionオブジェクトです。

選択範囲内の段落を集合として取得するには、以下のようにすればOKです。

Selection.Paragraphs

これで、選択範囲に含まれる段落の集合をParagraphsコレクションとして取得することができます。

取得したParagraphsコレクションに含まれる段落のインデックス番号は1から始まり、上から順に振られていきます。

例えば、以下のようにめちゃめちゃな範囲選択をしていても、選択範囲の開始位置がある段落のインデックス番号が1、選択範囲の終了位置がある段落のインデックス番号が最後となり、この例では4となります。

Wordの選択範囲のインデックス番号

例えば3番目の段落を取得するには

Selection.Paragraphs(3)

とすればOKです。

段落内のテキストを表示する

では、試しに取得した段落の文字列を出力してみましょう。

Wordの任意の範囲を選択しつつ、イミディエイトウィンドウに以下のように入力して Enter してみてください。

?Selection.Paragraphs(3).Range.Text

イミディエイトウィンドウには、以下のように表示されました。

Word VBAで選択範囲の3番目のテキスト

命令的には

?Selection.Paragraphs(3).Text

としたくなりますが、これはダメです。Paragraphオブジェクトは段落を表していますが、テキストの情報を持っていません。

でも、Paragraphオブジェクトからその範囲を取得することはできますので、まずRangeプロパティで段落の範囲を取得してから

Paragraphオブジェクト.Range

その範囲内のテキストをTextプロパティで取得する

Rangeオブジェクト.Text

という段取りになります。

選択範囲の最初の段落を取得する

インデックス番号1の段落

選択範囲の最初の段落については、1番目の段落、つまりインデックス番号1を使えば簡単に取得できます。

Paragraphsコレクション(1)

Firstプロパティで最初の段落を指定する

これでもよいのですが、Word VBAには便利なFirstプロパティというものがありまして

Paragraphsコレクション.First

とすれば、Paragraphsコレクションの最初のParagraphオブジェクトを取り出すことができます。

選択範囲の最後の段落を取得する

選択範囲の最後の段落はどのように取得しましょうか。

最後のインデックス番号の段落

まず、Paragraphsコレクションの要素数を使う方法です。

最後の段落数は、Paragraphsコレクションの要素数と等しいですから、Countプロパティを使えばよいですね。

Paragraphsコレクション.Count

この値がそのまま最後の段落のインデックス番号になります。

Lastプロパティで最後の段落を指定する

当然Firstプロパティがあれば、Lastプロパティも存在します。

最後の段落を取得するにはLastプロパティのほうがシンプルに記述できますね。

Paragraphsコレクション.Last

これでParagraphsコレクションの最後の要素を取り出すことができます。

最初の段落と最後の段落のテキストを取得する

例えば、このようなプロシージャを用意しました。

Sub printParagraphs()

Debug.Print Selection.Paragraphs.First.Range.Text
Debug.Print Selection.Paragraphs.Last.Range.Text

End Sub

Word文書で適当に範囲選択をしておいて…

Wordで範囲選択

プロシージャを実行すると、以下のようにイミディエイトウィンドウに出力がされます。

Word VBAで選択範囲の最初と最後の段落の文字列を出力

選択範囲は段落の途中からとかめちゃめちゃであったとしても、ちゃんと最初の段落と最後の段落がきれいに出力されていますね。

まとめ

以上、Word VBAで選択範囲から最初の段落と最後の段落を取得する方法をお伝えしました。

Paragraphコレクションで集合として取得して、

  • 最初の段落:Firstプロパティ、またはインデックス番号が1
  • 最後の段落:Lastプロパティ、またはインデックス番号がコレクションの要素数

ということで取得をすることができます。

また、段落に含まれる文字列を取得する方法をお伝えしました。段落は範囲の情報を持ちませんので、いったんRangeプロパティで範囲を取得してから、Textプロパティで文字列を取得という流れでしたね。

次回は、スタイルの設定の仕方です。

Word VBA初心者にちゃんと理解して欲しいスタイルとその設定をする方法
Word VBA初心者向けに入力を便利にする簡単マクロの作り方をお伝えしています。今回はWord VBAで知っておくべきスタイルのこと、またstyleプロパティで段落のスタイルを変更をする方法についてです。

どうぞお楽しみに!

連載目次:初心者向けWord VBAで文字入力をしてみよう

お仕事でよく使う文書作成ソフトWord。実は、WordでもVBAでプログラミングができるんです。本シリーズでは、初心者向けとしてWord VBAで文字入力をする方法をお伝えしていきます。
  1. Word VBA入門の最初の一歩!マクロ作成準備の6つのステップ
  2. Word VBAでカーソル位置に文字を入力するとっても簡単なプログラム
  3. Word VBA初心者がまず押さえておくべき段落記号の入力方法
  4. Word VBAで選択範囲の前後に文字列で挿入するマクロを作る方法
  5. Word VBAで作成したマクロをショートカットキーに登録する方法
  6. Word VBAを使うなら知っておくべき「段落」の話とその操作方法
  7. Word VBAで選択範囲の最初の段落&最後の段落を取得する方法
  8. Word VBA初心者にちゃんと理解して欲しいスタイルとその設定をする方法
  9. Word VBAでWithステートメントを使って同一オブジェクトの表記をスッキリ書く方法
  10. Word VBAでフォームを表示&コマンドボタンでマクロを実行する方法
  11. Word VBAでフォームをEscキーで閉じるようにするテクニック

タイトルとURLをコピーしました