• ベストアンサー

マクロでオートシェイプ以外の図形を消去したい。

いろいろとマクロを手探りで独学しています。どうしてもわからないので教えてください。 シート上にたくさんの画像が並べてあります。これはマクロを使って挿入・配置されたものです。それを印刷してしまったら、新たにその上から異なる画像を貼り付けていくようにしています。画像は挿入されてきますが、前の画像を消去しなければ、重なってしまうため、消去しなければいけません。ただし、画像を挿入するためのマクロをオートシェイプに登録しているので、これ以外の画像(図)を消去するというマクロが必要です。この消去するマクロも「新しいマクロの登録」で試したのですが、Picture***と画像に名前をつけた状態のものを選択し、消去するというもので、希望のマクロではありません。可能であれば、選択範囲のセルの画像を消去するというマクロが理想です。よろしくお願いいたします。

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

画像(Picture)は無差別に削除してよいなら。 Sub DeletePictures()   ActiveSheet.Pictures.Delete End Sub  # 画像にはマクロを割り当てていない前提で 画像(Picture)に加え、シェープやグラフなども含めて対象とし、 かつマクロを割り当てていないもののみ削除...とするなら。 (セルの選択範囲内にあるもののみ削除します) Sub DeleteShapes()   Dim shp As Shape   On Error Resume Next   For Each shp In ActiveSheet.Shapes     If Not Intersect(shp.TopLeftCell, Selection) Is Nothing Then       If shp.OnAction = "" Then         shp.Delete       End If     End If   Next End Sub

nicedesu
質問者

お礼

上段の無差別に消去で対処できました。ありがとうございました。

その他の回答 (2)

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.2

今後の検討課題として・・・。 Imageコントロールを使えば、 中身だけを変える、という ことも出来ます。 中身が無いものは非表示、 とすればいいかと思います。

nicedesu
質問者

お礼

ありがとうございます。まだまだ勉強不足の私には理解ができません。これからもっと勉強します。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.1

TypeName で判定します。 Dim shp As Object For Each shp In Worksheets(1).DrawingObjects If TypeName(shp) = "Picture" Then shp.Delete Next

nicedesu
質問者

お礼

ありがとうございます。対処できました。