[[20130523083610]] 『ブック全体のオブジェクトの一括削除』(ドラえもん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ブック全体のオブジェクトの一括削除』(ドラえもん)
エクセルファイルのオブジェクトを一括削除する方法が知りたいです。

シートごとに一括で削除する方法はわかりますが、ブック全体のオブジェクトを全て一括削除したいのです。

マクロや何かで出来ますでしょうか?

宜しくお願い致します。


 シートごとの削除の仕方が分かるのであれば、全シートにその処理をすればよいと
 思いますし、それが素直なやり方だと思いますが、何か問題があるでしょうか。
 (Mook)

シートが100以上あるブックでそれを繰り返すのが大変なのです。
F5→セルの選択→オブジェクトでシート中にあるオブジェクトを選択して削除
↑これをシートを変えて何回も繰り返すことになるんですよね。

なので、これをVBAで一回で出来ないかと思いまして質問させていただきました。
(ドラえもん)


 >シートごとに一括で削除する方法はわかりますが、
 というのはマクロでのやり方がわかるという意味ではなかったのですね。勘違いしていました。
 (Mook)
 Sub Sample()
    Dim ws As Worksheet
    Dim sh As Shape
    For Each ws In Worksheets
        For Each sh In ws.Shapes
            sh.Delete
        Next
    Next
 End Sub


出来ました(^0^0^)!!!!

全部消えました!!!!

ありがとうございました
(どらえもん)


こちらのVBAをアドインとして組み込むことはできますか??

その場合はどのような処理をすればよろしいのでしょうか??

宜しくお願い致します。

(ドラえもん)


 横から失礼

 アドインについては、Mookさんなり、他の方からの回答があると思うので、ちょっと老婆心ながら。
 アドインにしておくということは、様々なブック、様々なシートで利用予定ということだろうね?

 仮に、そのシートに入力規則が設定されていた場合、全シェープを削除すると、入力規則も削除される。
 削除されるだけならまだいいけど、その後、そのシートで新しい入力規則の設定が不可能になる。

 参考まで。

 (ぶらっと)

 ↑ 心配しすぎかもしれないけど、このような状況を回避しようとすれば。

  Sub Sample()
    Dim ws As Worksheet
    Dim sp As Shape
    Dim c As Range
    Dim todo As Boolean

    For Each ws In Worksheets
        For Each sp In ws.Shapes
            todo = True
            If TypeName(sp.DrawingObject) = "DropDown" Then
                Set c = Nothing
                On Error Resume Next
                Set c = sp.TopLeftCell
                On Error GoTo 0
                If c Is Nothing Then todo = False
            End If
            If todo Then sp.Delete
        Next
    Next

 End Sub

 (ぶらっと)

おはようございます!!!
今やってみたところどちらもうまくできました!!!
そしてアドインの組み方を調べて組んだところ、どのエクセルブックでも使えるようになりました。
また何かありましたら宜しくお願いいたします。
(ドラえもん)


 アドインの件はご自身で解決されてよかったと思いますが、
 誰もが使うのではなく、自分が使う処理であれば個人マクロに登録するのも一つのやり方
 だと思います。ご参考までに。
 (Mook)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.