【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.
シート名や列番号が正しいか確認してください。