📘 Excel逆引き事典

【VBA】全てのシートを部分一致で取得する方法

日々の業務では、大量のデータの中から特定のキーワードを持つシートを探す作業が発生することがあります。この記事では、VBAを使用して部分一致で指定した文字列を含むすべてのシート名を一覧表示する方法を紹介します。

サンプルコード

VBA
Option Explicit
Sub GetSheetsWithPartialMatch()
    Dim ws As Worksheet, lastRow As Long, i As Long
    Dim targetString As String
    
    ' 部分一致で探したい文字列を指定
    targetString = "部分一致"
    
    Application.ScreenUpdating = False
    
    ' 結果を表示するシートを作成またはクリア
    On Error Resume Next
    Set ws = ThisWorkbook.Sheets("結果")
    If Not ws Is Nothing Then ws.Delete
    Set ws = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
    ws.Name = "結果"
    ws.Cells.ClearContents
    
    ' 各シートを検索し、部分一致するものがあればリストに追加
    i = 1
    For Each ws In ThisWorkbook.Worksheets
        If InStr(1, ws.Name, targetString) > 0 Then
            i = i + 1
            ws.Range("A" & i).Value = ws.Name
        End If
    Next ws
    
    Application.ScreenUpdating = True
End Sub

よくある質問

Q 元に戻せますか?

A.
VBAの実行結果は「元に戻す」が効きません。必ずバックアップを取ってから実行してください。

Q エラーが出たら?

A.
シート名や列番号が正しいか確認してください。