Word VBAではメソッドの戻り値を変数に代入するのではなく、状態をメソッドで変更するケースが結構あります。
Excel VBAに慣れている方がWord VBAを学習しはじめたとき、このタイプのメソッド・オブジェクトに戸惑うように感じています。
Word VBAのもっとも主要なオブジェクトであるSelectionとRangeが、このタイプのオブジェクトに該当します。
Selection.WholeStoryに戻り値はない
「Selection.WholeStory 変数」
という検索でこのサイト『インストラクターのネタ帳』へアクセスした方も、そのケースだったのではないかと私は考えています。
勝手な推測ですが、以下のようなコードを書いてみたものの、
Sub WholeStoryを変数に_コンパイルエラーが発生してしまうケース() ActiveDocument.Range(0, 0).Select Dim sel As Selection Set sel = Selection.WholeStory End Sub
「Functionまたは変数が必要です。」
コンパイルエラーが発生したのではないかと想像しています。
Selection.WholeStoryは戻り値のないメソッド
オブジェクトブラウザーの詳細ペインに「Sub WholeStory」と表示されているとおり、SelectionオブジェクトのWholeStoryメソッドには、そもそも戻り値がありません。
Selection.WholeStoryメソッドに戻り値がないにも関わらず、
Set sel = Selection.WholeStory
のように代入文にしているため(文法的に間違っていますから)、コンパイルエラーが発生します。
Selection.WholeStoryの結果を変数に反映させるサンプル
Selection.WholeStoryメソッドの結果をオブジェクト変数に反映したいのであれば、代入文にするのではなく、以下のようなコードです。
ActiveDocument.Range(0, 0).Select
Dim sel As Selection
Set sel = Selection
sel.WholeStory
End Sub
事前にSelectionプロパティの戻り値であるSelectionオブジェクトをオブジェクト変数に代入しておいて、
Dim sel As Selection Set sel = Selection
SelectionオブジェクトのWholeStoryメソッドで本文全体に選択範囲を広げます。
sel.WholeStory
これでオブジェクト変数selに格納されているSelectionも変化します。
Selection.WholeStoryの結果を確認する
初めて上記のコードをご覧になった方は、なかなか肚落ちしないかもしれません。
拙著でも多用しているローカルウィンドウを使って、オブジェクト変数selの中身を確認しながらステップ実行してください。
中身の確認に向いているのは、Selectionオブジェクトの既定メンバーであるTextプロパティです。
オブジェクトブラウザーで既定メンバーがどう表示されるのかも、PowerPointの場合と同じです。
まず確認すべきは、
Set sel = Selection
を実行した直後のTextプロパティの値です。
上図は、アクティブな文書の先頭に
「Word に用意されているヘッダー、フッター、表紙、テキスト ボックス デザインを組み合わせると、プロのようなできばえの文書を作成できます。」
という文が入力されているときの状態です。
この時点では、
ActiveDocument.Range(0, 0).Select
で移動したアクティブな文書の先頭が選択されているので、文書の先頭1文字「W」だけが、Textプロパティで取得できています。
つづいてこの記事でご紹介しているSelection.WholeStoryメソッドを実行すると、下図のようにTextプロパティの値は変化します。
ローカルウィンドウでは表示しきれませんけれど、Selection.WholeStoryメソッドを実行することで取得した本文全体の文字列が、Textプロパティの値に表示されています。
これは、Selection.Textプロパティのみの値が変化したのではなく、WholeStoryメソッドが実行されたことによりSelectionオブジェクト自体が変化しています。
Word VBAを使うのなら、こういったタイプのオブジェクトやコードに少しずつ慣れていきましょう。
- 『Excel VBAユーザーのためのWord VBA入門(1)』出ました。
- 『Word VBA入門』で紹介しているオブジェクトごとのプロパティ一覧
- 『Word VBA入門』で紹介しているオブジェクトごとのメソッド一覧
最終更新日時:2024-03-01 06:12
- Newer:Sortの範囲指定時に使うSetRangeメソッドの引数を変数で
- Older:ActiveSheetを変更するには
Home » ワードマクロ・Word VBAの使い方 » Selection » Word VBAでSelection.WholeStoryを変数に??