「vba ワード オートシェイプ Characters」
といった検索キーワードでアクセスがありました。
Excel VBAで図形内の文字列を取得する、
ActiveSheet.Shapes(1).TextFrame.Characters.Text
といったオブジェクト式に慣れている方による検索ではないかと、推測しています。
Excel VBAの
ActiveSheet.Shapes(1).TextFrame.Characters.Text
から類推して、Word VBAで、
ActiveDocument.Shapes(1).TextFrame.Characters.Text
といったコードを書いたものの、「コンパイルエラー: メソッドまたはデータメンバーが見つかりません。」エラーが発生したのではないかと想像しています。
図形内文字列を取得するWord VBAのサンプル
アクティブ文書の1つ目の図形に文字列を入力した状態で、以下のSubプロシージャを実行してください。
Debug.Print ActiveDocument.Shapes(1).TextFrame.TextRange.Text
End Sub
Word VBAで図形内文字列を取得するには、このようなコードを書きます。
WordのオブジェクトモデルはExcelと異なる
ExcelとWordはいずれもMicrosoftの製品ですから似た部分もありますけれど、結局は別のアプリケーションですから、細かな部分は当然異なります。
VBAから操作する際のオブジェクトモデルも違います。
図形を表すShapeオブジェクト下に、TextFrameプロパティで取得できる文字列枠を表すTextFrameオブジェクトが存在するのは同じですけれど、
TextFrameの下位オブジェクトに該当する文字列を表すオブジェクトは異なります。
Excel VBAの図形内文字列は、TextFrameオブジェクトが持つCharactersメソッドで取得できるCharactersオブジェクトで操作します。
これに対し、Word VBAの図形内文字列は、TextFrameオブジェクトに用意されているTextRangeプロパティで取得できるRangeオブジェクトで操作します。
最終更新日時:2020-11-16 17:50
Home » ワードマクロ・Word VBAの使い方 » Shape・図形 » Word VBAのTextFrame直下にCharactersはない