プロが教える店舗&オフィスのセキュリティ対策術

「図の挿入」を使って画像ファイルから読み込んで貼り付けた画像を、ワードマクロで選択したいと思っています。
どのようなコードを書けばいいか、教えてください。

ちなみに、以前どなたかがされた質問に対する回答(http://oshiete1.goo.ne.jp/qa2224793.html)で
ActiveDocument.Content.ShapeRange.Select
を使うという方法が提示されていましたが、「図の挿入」で読み込んだ画像ファイルには使えないようです。

よろしくお願いします。

A 回答 (2件)

#1のご回答がありますが


私も判らずながらやってみました。
http://msdn.microsoft.com/library/ja/default.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/ …
に書いておられますが
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
を見つけました。
    • good
    • 2
この回答へのお礼

色々と私の考えが足りなかったところまで含めての詳細なご回答、まことにありがとうございました。
私の使い方では、選択自体はIndexによる補足で十分でした。その他のサンプルも大変役立ちました。
ありがとうございました。

お礼日時:2007/11/07 16:57

マクロについては勉強中なので、的確な回答はできませんが。


以前の回答にある"Shape"は浮動配置された画像などに対してのもので、
[行内]にある場合は、使用できません。
以下のマクロで、位置を固定された[行内配置 ( InlineShape )]が幾つ
あるのか、位置を固定されない[浮動配置 ( Shape )]が幾つあるのか判断
できるもので確認されてはいかが。

Sub gazoucount()
 Dim doc As Document
 Set doc = ActiveDocument
 MsgBox "位置を固定した図形 : " & doc.InlineShapes.Count & _
vbCr & "位置を固定しない図形 : " & doc.Shapes.Count
End Sub

Shapeであれば以前のマクロは有効だと思います。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
大変参考になりました。

お礼日時:2007/11/07 16:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています