この記事では「エクセルにてシート(タブ)を一括削除(まとめて消す:複数を一気に消す)方法」について解説していきます。
方法としては下記のようなものが一般的に利用できます。
・シートの複数選択
・VBAマクロ
それでは、具体的な操作方法を解説しましょう。
エクセルにてシート(タブ)を一括削除(まとめて消す:複数を一気に消す)方法1
こちらのブックにはSheet1, … Sheet5というシートが含まれています。
この中で選択したシートを削除する想定です。
まず、シートを複数選択状態にするにはタブをクリックすればよいのですが、普通にクリックしても、このようにクリックしたシートしか選択されません。
この場合は、CTRLキーを押しながらタブをクリックする必要があります(一括選択であれば右クリック→すべてのシートを選択でも、一気に選べます)。
上記ではSheet2が選択されていますが、ここでCTRLを押したままSheet1をクリックしてみましょう。
このように2つのシートを選択することができます。
なお、選択されているかどうかはタブの背景色で判断できます。
表示中のシート以外はもう一度CTRL+クリックで選択状態を外すことができます。
また、このようにSheet3を飛ばしてSheet4を選択状態にすることも可能です。
これらの操作により、削除する予定の複数シートを選択します。
本例ではSheet1,3,5を削除することにしましょう。
目的のシートを選択状態にし、リボンより「ホーム」–「削除」–「シートの削除」をクリックします。
確認メッセージが表示されますので、削除してもよいのであれば「削除」を選択します。
Sheet1,3,5が一括削除されました。
なお、メッセージで言われている通り、一度削除したシートは二度と復元できません。
「元に戻す」といった操作は一切受け付けないのでシート削除の際はしっかりと確認した上で行いましょう。
VBAマクロでシート(タブ)を一括削除(まとめて消す:複数を一気に消す)方法2
少し敷居は高いですが、VBAマクロでの実現方法についてお話しします。
まずはVBEを起動させる必要があります。
キーボードでAlt+11と押してみましょう。
下記のようなウィンドウが開いたら成功です。
左端に表示されているツリーを右クリックし、「挿入」–「標準モジュール」をクリックします。
何も書かれていないテキストエディタが開くので、ここにコード書きます。
なお、下記例では「Option Explicit」という宣言がすでに書かれていますが、これはエクセルの設定次第で予め書かれていることがあります。
直接動作に影響を与えるものではないので、ないからといって慌てる必要はありません。
記述するコードは下記の通りです。
'関数名 シートにおいて、この名前で表示される
Sub Work()
'ループで使用するシートオブジェクト
Dim sh As Worksheet
'シート削除時の確認メッセージを出さない
Application.DisplayAlerts = False
'当ファイルが保有している全シートを確認
For Each sh In ThisWorkbook.Sheets
'シート名の末尾が「Del」かどうか
If sh.Name Like "*Del" Then
'シートを削除
sh.Delete
End If
Next
'「メッセージを出さない」設定を解除
Application.DisplayAlerts = True
End Sub
なお、’(シングルクォーテーション)の後ろに書いているのは一般に「コメント」と呼称されます。
書かなくても動作への影響はないですが、後々のメンテナンス、引継ぎの際に、仕様を把握していないと非常に苦しむことが多いです。
あなた自身へのメッセージでもありますので、面倒がらずに書くようにしましょう。
今回は、当コード内における解説をコメントとして記載しておきましたので、参考にしてください。
ここまでできたらVBEを閉じて構いません。
次に削除したいシート名の末尾に「Del」を付与します。
タブを右クリックし、コンテキストメニューより「名前の変更」をクリックします。
タブが編集可能な状態になるので、「(元々のシート名)Del」とします。
ENTERを押し、シート名が変更されたことを確認します。
同様の操作をSheet4にも行ってみましょう。
シート名が確定したら、シート上でAlt+F8と押します。
下記ダイアログに作成したマクロ「Work」を選択して、実行をクリックします。
実行すると末尾に「Del」を付与したSheet2,4が削除されました。
このマクロでは「削除する予定のシート」を識別するための何らかのルールが必要になります。
本例では「末尾にDel」としましたが、勿論ほかにもやりようはあります。
重要なのは「仕組みとして理解しやすい」といったところになるでしょう。
まとめ 【エクセルにてシートを一括削除(複数タブを一気に消す)で行う方法
この記事では「エクセルにてシート削除を一括で行う方法【タブをまとめて削除する】」について解説しました。
プログラミング経験者にとってはVBAマクロを書くのは造作もないことでしょうが、それ以外の方にとっては非常にハードルの高い世界となるかもしれません。
あなたの職場にプログラミングの知識がある方がお見えになるのであれば非常にラッキーです。
その方にマクロはどう書けばよいか、とことん聞いてみてはどうでしょうか。
コメント