Home » ワードマクロ・Word VBAの使い方 » Shape・図形 » Word VBAのTextFrame直下にCharactersはない

Word VBAのTextFrame直下にCharactersはない

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

「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プロシージャを実行してください。

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はない

「Shape・図形」の記事一覧

検索


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

.