Excel VBA | 複数ブックにまたがって条件付きで特定のシートだけ削除する

Excel VBA VBA
スポンサーリンク

ここでは 複数ブックにまたがって条件付きで特定のシートだけ削除する VBAの例を紹介します。ポイントは「開いている複数のブックをループし、条件に合致するシートを ws.Delete で削除する」ことです。

⚠️ 注意:シート削除は元に戻せないため、必ずバックアップを取ってから実行してください。


基本例:シート名が「Temp」で始まるシートを削除

Sub 複数ブックで特定シート削除()
    Dim wb As Workbook
    Dim ws As Worksheet
    
    Application.DisplayAlerts = False ' 削除確認ダイアログを非表示
    
    For Each wb In Application.Workbooks
        If wb.Name <> ThisWorkbook.Name Then
            For Each ws In wb.Worksheets
                If Left(ws.Name, 4) = "Temp" Then
                    ws.Delete
                End If
            Next ws
        End If
    Next wb
    
    Application.DisplayAlerts = True ' ダイアログを元に戻す
End Sub
VB

👉 開いているすべてのブックで、シート名が「Temp」で始まるシートを削除します。


応用例1:セルの値で判定して削除

Sub セルの値でシート削除()
    Dim wb As Workbook
    Dim ws As Worksheet
    
    Application.DisplayAlerts = False
    
    For Each wb In Application.Workbooks
        For Each ws In wb.Worksheets
            ' A1セルが「削除」と書かれていたら削除
            If ws.Range("A1").Value = "削除" Then
                ws.Delete
            End If
        Next ws
    Next wb
    
    Application.DisplayAlerts = True
End Sub
VB

👉 各シートのA1セルに「削除」と書いてある場合のみ、そのシートを削除します。


応用例2:複数条件を組み合わせて削除

Sub 複数条件でシート削除()
    Dim wb As Workbook
    Dim ws As Worksheet
    
    Application.DisplayAlerts = False
    
    For Each wb In Application.Workbooks
        For Each ws In wb.Worksheets
            ' 条件1: シート名が「Old」で始まる
            ' 条件2: B2セルの値が0以下
            If Left(ws.Name, 3) = "Old" And ws.Range("B2").Value <= 0 Then
                ws.Delete
            End If
        Next ws
    Next wb
    
    Application.DisplayAlerts = True
End Sub
VB

👉 シート名が「Old」で始まり、かつB2セルの値が0以下なら、そのシートを削除します。


ポイント

  • シート削除ws.Delete
  • 確認ダイアログを抑制Application.DisplayAlerts = False
  • 複数ブックをループFor Each wb In Application.Workbooks
  • 条件判定 → シート名やセルの値を使って柔軟に設定

練習課題

  1. 全ブックの「Sheet2」を削除するコードを書いてみる
  2. 各シートのC1セルが「Delete」と書かれていたら削除するコードを作る
  3. 複数条件を組み合わせて「シート名がTempで始まり、A1セルが空なら削除」にするコードを作る

こうした仕組みを作ると、複数ブックにまたがって条件付きで特定のシートを削除する自動化ツールが完成します。

VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました