エクセルVBAで指定したシート以外のシートを削除する!

ファイルのシートを、削除する時、数が多いと1つ1つ手作業で削除するのは大変です。このシートだけを残して、後のシートは全て削除したいという時、エクセルVBAで、指定したシート以外のシートを削除できます。必要のないシートを削除する時、VBAでシートを削除すると、間違えて別なシートを削除してしまうことはありません。シートの指定は、特定の文字を含むシート以外のシートを削除する事もできます。残したいシートが1つではなく、複数あるときも、複数のシートを指定して、これ以外のシートも削除できます。残すシートが決まっている場合、エクセルVBAで、指定した以外のシートを、一括得削除してみましょう。

 

 

指定以外のシートを削除

エクセルVBAで、指定したシート以外のシート、全てを削除するコードです。

シート名「名簿」以外のシートを、すべて削除します。

Sub シートの削除A()
Dim WSh As Worksheet
With Application
Application.DisplayAlerts = False ’ 確認のメッセージを非表示にする
For Each WSh In Worksheets
If tWSh.Name <> “名簿” _
Then WSh.Delete
Next
Application.DisplayAlerts = True
End With
End Sub

シートを削除する前に、シートの削除確認のメッセージが出ます。

 

 

そのメッセージを非表示にするには、DisplayAlerts プロパティに False を設定します。

Application.DisplayAlerts = False

DisplayAlerts プロパティに True で元に戻します。

Application.DisplayAlerts = True

 

特定の文字を含むシート名以外のシートを削除

特定の文字を含むシート以外の、全てのシートを削除するコードです。

「一覧表」を含むシート名、以外のシートをすべて削除します。

Sub シートの削除B()
Dim MWSh As Worksheet
With Application
.DisplayAlerts = False
For Each MWSh In Worksheets
If Not MWSh.Name Like “一覧表*” _
Then MWSh.Delete
Next
.DisplayAlerts = True
End With
End Sub

 

 

指定した複数のシート以外のシートを削除

複数のシートを指定して、それ以外のシート、すべてを削除するコードです。

シート名「名簿」と「住所」以外の、シート全てを削除します。

Sub Sample2()
Dim Wshe As Worksheet
For Each Wshe In Sheets
If Not (Wshe.Name = “名簿” Or Wshe.Name = “住所”) Then
Application.DisplayAlerts = False
Wshe.Delete
Application.DisplayAlerts = True
End If
Next
End Sub

指定以外のシートの削除

エクセルでの作業で、いつも残すシートが決まっている場合は、VBAを使うとこんなにも簡単に、指定したシート以外のシート、すべてを削除できます。誤ってシートを削除する、といったようなことはありません。一度、シートを削除するVBA作っておくと、残すシートが変わったときは、シート名を修正するだけで使いまわしができます。エクセルVBAで、指定した以外のシートを削除するマクロをボタンに登録すると、ボタンをクリックするだけで、シートを一括で削除できます。

こちらの記事もご覧ください。⇒エクセルVBAでシートを削除する!