Word VBAで、行内オブジェクトを表すInlineShapeと、浮動オブジェクトを表すShapeは、似ている部分もありますけれど、別のオブジェクトです。
このサイトのアクセスログで、
「Word VBA inline画像か否かを調べる」
という検索キーワードでのアクセスがありました。
何らかの処理を行う前に、InlineShapeかどうかを調べる方法を探していた方による検索でしょうか。
選択範囲にInlineShapeが含まれるかを判定するサンプル
検索キーワード「Word VBA inline画像か否かを調べる」だけでは詳細がわかりませんので、選択範囲内にInlineShapeが存在するかを判定するコードをご紹介しておきます。
If Selection.InlineShapes.Count <> 0 Then
MsgBox "選択範囲にInlineShapeが含まれています。"
End If
End Sub
サンプルマクロで利用しているコードについて
Word VBAのグローバルメンバーであるSelectionプロパティで取得した
Selectionオブジェクトに用意されているInlineShapesプロパティの戻り値InlineShapesコレクションに含まれる
InlineShapeオブジェクトの個数(Count)が、
0でないことによって、
If Selection.InlineShapes.Count <> 0 Then
InlineShapeオブジェクトが存在すると判定しています。
もしもSelectionの仕様がExcel VBAのようだったなら
オブジェクトブラウザーでも確認できるとおり、Excel VBAのSelectionプロパティは、選択対象によって取得できるオブジェクトが異なりますが(そのためオブジェクトブラウザーの詳細ペインで戻り値が「As Object」と表示されています)、
Word VBAのSelectionプロパティはSelectionオブジェクトを返します。
もしもExcel VBAのように選択対象によって取得できるオブジェクトが異なるのならば、VBAのTypeName関数をつかって判定できたはずです。
最終更新日時:2020-04-20 15:26
Home » ワードマクロ・Word VBAの使い方 » Shape・図形 » InlineShapeがあるかを判定する