- ベストアンサー
エクセルVBAでオートシェープを識別して削除したいのです・・・
エクセルシートにたくさん貼り付けた画像を一度に削除するため、下記のようなマクロを作成しました。 しかし、これでは「テキストボックス」や「→」のようなオートシェープも全部消えてしまいます。 画像データ(図)だけを認識して消すにはどうすればよいのでしょうか? Sub sakujo() Dim Myshape As Shape For Each Myshape In ActiveSheet.Shapes If Myshape.Type <> msoFormControl Then Myshape.Delete End If Next End Sub
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
No1の補足を見ました。 ひょっとして元の画像にリンクを張っていませんか? もしそうなら、 msoPictureではなく、msoLinkedPictureです。
その他の回答 (1)
- popesyu
- ベストアンサー率36% (1782/4883)
回答No.1
画像データというのが具体的に何を示しているのか不明瞭ですが。 MsoShapeType の定数は他に20個ぐらいあるようで、この中で画像データというとおそらくmsoPictureのことかと思います。 ということで If Myshape.Type <> msoFormControl Then ↓ If Myshape.Type = msoPicture Then これで解決するのではないかなと。
質問者
補足
それもやってみました。でも消えませんでした。 画像とはJpegやGifの写真なんです。クリックするとたとえば「図 1」となっています。 よろしくお願いします。
お礼
そのとおりです。リンクを貼っていました。 解決しました! ありがとうございました!