- ベストアンサー
ワードマクロで画像を選択する方法
「図の挿入」を使って画像ファイルから読み込んで貼り付けた画像を、ワードマクロで選択したいと思っています。 どのようなコードを書けばいいか、教えてください。 ちなみに、以前どなたかがされた質問に対する回答(http://oshiete1.goo.ne.jp/qa2224793.html)で ActiveDocument.Content.ShapeRange.Select を使うという方法が提示されていましたが、「図の挿入」で読み込んだ画像ファイルには使えないようです。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1のご回答がありますが 私も判らずながらやってみました。 http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vbawd11/html/woobjInlineShapes1.asp にInlineShapes の説明があります。 ーー まずエクセルの操作で、挿入ー図ーファイルからでファイル名を指定します。 するとInlineShapes のオブジェクトになるようで、 Sub test02() For Each ishape In ActiveDocument.InlineShapes ishape.ConvertToShape Next ishape End Sub を実行するとShape オブジェクトに変換できます。 Sub test01() Dim pc As Object Dim ishape As Object MsgBox ActiveDocument.Shapes.Count MsgBox ActiveDocument.InlineShapes.Count For Each pc In ActiveDocument.Shapes MsgBox pc.Name Next End Sub を実行しますと メッセージボックスで2と0がでて Picture 6 などと表示できます。 Sub test03() ActiveDocument.Shapes("Picture 6").Select Selection.Delete End Sub で削除できました。 ーーー InlineShapeを捉える件ですが http://www.keep-on.com/excelyou/2001lng4/200112/01120012.txt に書いておられますが Indexでしか捕らえられないのかもしれません。 Sub test04() MsgBox ActiveDocument.InlineShapes.Count n = ActiveDocument.InlineShapes.Count For i = 1 To n MsgBox ActiveDocument.InlineShapes(i).Height Next i End Sub 私もNameでやってみましたができませんでした。 他に方法があるのかどうかわかりません。 Shapes->InlineShapeは選択したものにつき Sub ConvertToInlineShape() With Selection ' \\ If we selected a Shape then convert to InlineShape If .Type = wdSelectionShape Then .ShapeRange(1).ConvertToInlineShape End If End With End Sub というコードを見つけました。 Pictureの判別は Sub test05() Dim inlineShape For Each inlineShape In ActiveDocument.InlineShapes If inlineShape.Type = wdInlineShapePicture Then MsgBox inlineShape.Height End If Next End Sub を見つけました。
その他の回答 (1)
- enunokokoro
- ベストアンサー率74% (3543/4732)
マクロについては勉強中なので、的確な回答はできませんが。 以前の回答にある"Shape"は浮動配置された画像などに対してのもので、 [行内]にある場合は、使用できません。 以下のマクロで、位置を固定された[行内配置 ( InlineShape )]が幾つ あるのか、位置を固定されない[浮動配置 ( Shape )]が幾つあるのか判断 できるもので確認されてはいかが。 Sub gazoucount() Dim doc As Document Set doc = ActiveDocument MsgBox "位置を固定した図形 : " & doc.InlineShapes.Count & _ vbCr & "位置を固定しない図形 : " & doc.Shapes.Count End Sub Shapeであれば以前のマクロは有効だと思います。
お礼
ご回答ありがとうございます。 大変参考になりました。
お礼
色々と私の考えが足りなかったところまで含めての詳細なご回答、まことにありがとうございました。 私の使い方では、選択自体はIndexによる補足で十分でした。その他のサンプルも大変役立ちました。 ありがとうございました。