• ベストアンサー

エクセル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

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

No1の補足を見ました。 ひょっとして元の画像にリンクを張っていませんか? もしそうなら、 msoPictureではなく、msoLinkedPictureです。

error123
質問者

お礼

そのとおりです。リンクを貼っていました。 解決しました! ありがとうございました!

その他の回答 (1)

  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.1

画像データというのが具体的に何を示しているのか不明瞭ですが。 MsoShapeType の定数は他に20個ぐらいあるようで、この中で画像データというとおそらくmsoPictureのことかと思います。 ということで If Myshape.Type <> msoFormControl Then ↓ If Myshape.Type = msoPicture Then これで解決するのではないかなと。

error123
質問者

補足

それもやってみました。でも消えませんでした。 画像とはJpegやGifの写真なんです。クリックするとたとえば「図 1」となっています。 よろしくお願いします。

関連するQ&A