「word文書の最後の段落を取得するVBA」
という検索キーワードでアクセスがあることに、気が付きました。
最終段落を取得するサンプル
以下のようなコードで、アクティブ文書の最後・末尾の段落を取得できます。
Dim cnt As Long
cnt = ActiveDocument.Paragraphs.Count
Dim par As Paragraph
Set par = ActiveDocument.Paragraphs.Item(cnt)
MsgBox par.Range.Text
End Sub
実行すると、アクティブ文書の最後・末尾の段落が選択され、その文字列がメッセージボックスに表示されます。
最終段落を取得するコードについて
コレクションから最後・末尾の単独オブジェクトを取得する、VBAの定番的なコードです。
コレクションに含まれる単独オブジェクトの個数をCountプロパティで取得し、
cnt = ActiveDocument.Paragraphs.Count
コレクションのItemメソッドの引数に指定しています。
Set par = ActiveDocument.Paragraphs.Item(cnt)
Paragraphは選択したり文字列取得したりできない
WordのParagraphは、直接選択したり、文字列を取得したりするようには作られていません。そういった役割はRangeオブジェクトが担っています。
上記のSubプロシージャでは、Paragraphに用意されているRangeプロパティでRangeオブジェクトを取得してSelectメソッドで選択し、
par.Range.Select
Textプロパティで文字列を取得しています。
MsgBox par.Range.Text
Lastプロパティを使って最終段落を取得するサンプル
Wordライブラリに含まれるコレクションには、最後・末尾の単独オブジェクトを取得するLastプロパティを持っているものがあります。
上図は、オブジェクトブラウザーでWordライブラリを選択して、「Last」を完全一致検索した状態です。
ParagraphsコレクションにもLastプロパティが用意されており、
これを使うことで先ほどより簡単なオブジェクト式で、最後・末尾の段落を表すParagraphオブジェクトを取得できます。
Dim par As Paragraph
Set par = ActiveDocument.Paragraphs.Last
par.Range.Select
MsgBox par.Range.Text
End Sub
先述したCountをItemの引数に指定するコードは、VBAを使うなら理解しておくべきですが、その上で、Lastプロパティも知っておくほうが、意味もよりわかりやすくコードもシンプルになりますから、おすすめです。
最終更新日時:2022-01-12 14:59
Home » ワードマクロ・Word VBAの使い方 » 段落・パラグラフ » Word VBAで最後・末尾の段落を取得する-Paragraphs.Lastプロパティ