[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『shapesオブジェクト』(まー)
dim ws as worksheet
for each ws in worksheets
ws.drawingobjects.selete next
とすると、全てのオブジェクトが消えてしまいますよね。shapes("Picture ●")のみを消去することはできますか?
教えてください。
ループさせて、Typeプロパティで判定してみるとどうでしょうか?
Sub test() Dim ws As Worksheet, shp As Shape For Each ws In Worksheets For Each shp In ws.Shapes If shp.Type = msoPicture Then shp.Delete End If Next shp Next ws End Sub
(momo)
Dim ws As Worksheet, shp As Shape For Each ws In Worksheets For Each shp In ws.Shapes If instr(shp.name,"Picture") >0 Then shp.Delete End If Next shp Next ws End Sub
>発想が大事ですね 確かにTypeプロパティの存在を知らない方が自力でコードを考え、それなりの答えを 出すことは大事なことですから、名前で判断するアルゴリズムに至ったことは これは、紛れもなく発想 なんでしょうねえ!!
が、図形の名前は、ユーザーが自由に変えられます。 例えば、
Sub sample1() With ActiveSheet.Lines.Add(100, 100, 200, 200) .Name = "Picture line" End With End Sub
まーさんが提示されたコードだと上記のラインも削除されてしまいます。 このsample1で作成されたライン、momoさんのコードだと 削除されません。図形のタイプで削除の有無を判断しているからです。 Typeで調べる方が「マクロで写真のみをすべて消去したいのです。 」という仕様に 対しては、より確実だということも確認しておいてください。
「マクロで写真のみをすべて消去したいのです。」に関しては、
Sub test2() Dim ws As Object For Each ws In Worksheets ws.Pictures.Delete Next ws End Sub
こんな方法もあります。
ichinose
Pictures・・・ オブジェクトブラウザで非表示のそんなコレクションがあったのですね。
いつもながら参考になります m(_ _)m
追記: テスト中に逆に変な使用(?)を見つけました。 PicturesですとActiveXコントロールも入ってしまうのですね。
(momo)
>ActiveXコントロールも入ってしまうのですね。 あらっ、本当だ、古いコレクションだからですね 私のほうこそ、参考になりました。 やっぱり、Typeですね!!
ichinose
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.