📘 Excel逆引き事典

【VBA】開いている全ブックを部分一致で抽出する方法

日々の業務で大量のExcelファイルを扱っていると、特定のキーワードを持つファイルを見つけるのが大変です。この記事では、開いているすべてのブックから指定した文字列が含まれるブック名を抽出し、効率的に作業を行う方法を紹介します。

サンプルコード

VBA
Option Explicit
Sub ExtractBooksByPartialMatch()
    Dim wb As Workbook, targetString As String
    Dim resultSheet As Worksheet
    Set resultSheet = ThisWorkbook.Sheets("結果")
    Application.ScreenUpdating = False
    ' ユーザー入力: 抽出したい文字列を指定
    targetString = InputBox("抽出する文字列を入力してください", "部分一致抽出")
    If targetString = vbNullString Then Exit Sub
    resultSheet.Cells.ClearContents
    Dim i As Long, j As Long
    For Each wb In Application.Workbooks
        If InStr(1, wb.Name, targetString, vbTextCompare) > 0 Then
            i = i + 1
            resultSheet.Cells(i, 1).Value = wb.Name
        End If
    Next wb
    ' 結果シートの最終行を取得
    Dim lastRow As Long
    lastRow = resultSheet.Cells(resultSheet.Rows.Count, "A").End(xlUp).Row
    Application.ScreenUpdating = True
    MsgBox "抽出が完了しました。結果は「結果」シートに表示されています。", vbInformation
End Sub

よくある質問

Q 元に戻せますか?

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

Q エラーが出たら?

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