Home » ワードマクロ・Word VBAの使い方 » 文・センテンス » Word VBAのSentencesですべての文を

Word VBAのSentencesですべての文を

動作検証バージョン:64bit Windows 10 Pro + 32bit Word(バージョン2206 ビルド15330.20246 Microsoft Store)

「word VBA 文書 文章 すべて Sentences」
という検索キーワードでアクセスがありました。

Word VBAのSentencesコレクションを使って、センテンス(文)ごとに、Word文書内のすべての文字列を取得するにはどのようなコードを探していらしたのでしょうか。

全センテンスを順番に取得するサンプルマクロ

拙著『Excel VBAユーザーのためのWord VBA入門(1)』の「3-8. Sentences経由でRangeを取得する」で紹介している以下のようなWordマクロで、アクティブ文書の全文字列がセンテンスごとに取得できます。

Sub Sentences経由で順番にRangeを取得する()
 Dim rng As Range
 For Each rng in ActiveDocument.Sentences
  rng.Select
  MsgBox rng.Text
 Next
End Sub

上記のWordマクロを実行すると、アクティブ文書内の文が順番に選択され、その文字列がメッセージボックスに表示されます。

サンプルマクロで行っている処理

Word文章を表すDocumentオブジェクトに用意されているSentencesプロパティで取得できる、

Sentencesコレクションを

For Each~Nextで順番に処理しているだけです。

Dim rng As Range
For Each rng in ActiveDocument.Sentences

拙著でも解説しているとおり、Sentencesコレクションに含まれる要素オブジェクトはRangeオブジェクトですから、

「For Each rng in ActiveDocument.Sentences」で順番に取得できる要素オブジェクトは、「Dim rng As Range」とWordのRangeオブジェクト型で宣言しています。

For Each~Nextループの中で、RangeオブジェクトのSelectメソッドを使って、

文字列範囲を選択し、

 rng.Select

RangeオブジェクトのTextプロパティを使って


取得できる文字列をMsgBox関数の引数に指定して、メッセージボックスに表示しています。

 MsgBox rng.Text
[スポンサードリンク]

Home » ワードマクロ・Word VBAの使い方 » 文・センテンス » Word VBAのSentencesですべての文を

「文・センテンス」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.