このサイト・インストラクターのネタ帳のアクセスログを眺めていて、
「vba word カーソルがある paragraphsコレクションオブジェクトを取得」
「vba word 選択している箇所 paragraphsコレクションオブジェクトを取得」
という検索キーワードでのアクセスがあることに気づきました。
Word文書内で、選択されている箇所・カーソルが存在している箇所の、Paragraphsコレクションオブジェクトを取得する、
Word VBA(Visual Basic for Applications)の、オブジェクト式を探していた方による検索です。
選択箇所のParagraphsコレクションオブジェクトを取得するサンプルマクロ
以下のWordマクロを実行すると、選択されている箇所の段落を表すParagraphsコレクションオブジェクトが取得できていることを確認できます。
Dim pars As Paragraphs
Set pars = Selection.Paragraphs
Stop
End Sub
Stopステートメントで、ステップ実行モードになりますから、メニュー[表示]-[ローカルウィンドウ]からローカルウィンドウを表示すると、
オブジェクト変数・parsに、選択箇所の全段落を表すParagraphsコレクションオブジェクトがセットされていることを確認できます。
ローカルウィンドウの「Item 1」をクリックして展開すると、Paragraphsコレクションオブジェクトに含まれる1つ目のParagraphオブジェクトの中身を見られます。
複数の段落が選択されていれば、選択されていた段落の数だけ「Item 2」「Item 3」と表示されます。
サンプルマクロの解説
Word VBAでは、ApplicationオブジェクトのSelectionプロパティで、
選択されている箇所を表すSelectionオブジェクトを取得できます。
Word VBAにはSelectionオブジェクトが存在する
Excel VBAの場合、Selectionオブジェクトは存在しておらず、Selectionプロパティで選択箇所を表す何らかのオブジェクトを取得できますが、Word VBAの場合はSelectionオブジェクトが存在しています。
「vba word カーソルがある paragraphsコレクションオブジェクトを取得」
「vba word 選択している箇所 paragraphsコレクションオブジェクトを取得」
という検索をなさった方が、Excel VBAに慣れていた場合、この違いをしっかりと意識する必要があります。
WordのSelectionプロパティもグローバルメンバーだから上位のオブジェクト式を省略できる
WordのSelectionプロパティはグローバルメンバーですから、
上記のSubプロシージャでは、上位のオブジェクト式を省略していきなり「Selection」からコードを書いています。
Selectionオブジェクトの持つ、Paragraphsプロパティで、
選択されている箇所の全段落を表すParagraphsコレクションオブジェクトを取得しているのが「Selection.Paragraphs」というオブジェクト式です。
Home » ワードマクロ・Word VBAの使い方 » 段落・パラグラフ » 選択箇所のParagraphsコレクションを取得する