Quantcast
Viewing all articles
Browse latest Browse all 2089

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

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

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

前回の記事はこちら。

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

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

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

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

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

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

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

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

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

Selection.Paragraphs

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

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

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

Image may be NSFW.
Clik here to view.
Wordの選択範囲のインデックス番号

最初の段落を取得するには

Selection.Paragraphs(1)

とすれば、選択範囲のうち最初の段落を取得することができます。

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

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

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

?Selection.Paragraphs(1).Range.Text

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

Image may be NSFW.
Clik here to view.
Word VBAで段落の文字列を表示する

命令的には

?Selection.Paragraphs(1).Text

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

Word VBAにおいて範囲はRangeオブジェクトが担当をしています。範囲がなければ文字列もないのですよ。

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

Paragraphオブジェクト.Range

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

Rangeオブジェクト.Text

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

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

選択範囲の最初の段落については、インデックス番号1を使えば簡単に取得できますが、最後の段落はどのように取得しましょうか。

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

Paragraphsコレクション.Count

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

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

Sub printParagraphs()

Dim cnt As Long
cnt = Selection.Paragraphs.Count

Debug.Print Selection.Paragraphs(1).Range.Text
Debug.Print Selection.Paragraphs(cnt).Range.Text

End Sub

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

Image may be NSFW.
Clik here to view.
Wordで範囲選択

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

Image may be NSFW.
Clik here to view.
Word VBAで選択範囲の最初と最後の段落の文字列を出力

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

まとめ

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

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

  • 最初の段落:インデックス番号が1
  • 最後の段落:インデックス番号がコレクションの要素数

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

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

では次回、今回学んだことを、選択範囲の前後に文字列を挿入するマクロに活かしていきたいと思います。

どうぞお楽しみに!

連載目次:初心者向け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で選択範囲の最初の段落&最後の段落を取得する方法

Viewing all articles
Browse latest Browse all 2089

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>