実行画面
[検索フォルダ]ボタンをクリックすると、指定フォルダ内のファイル一覧を作成します、次にそのファイル内から検索文字列を検索しカウントします。結果はファイル名の横にカウント数を入力します。
VBAコード
[検索フォルダ]ボタンのクリックイベントを下記に変更してください。
Private Sub CommandButton1_Click()
Dim sDir As String
If Range("C4") = "" Then
MsgBox ("検索文字列を入力してください。")
Range("C4").Select
Exit Sub
End If
'フォルダー選択ダイアログ
sDir = SelectFolder_FileDialog
If sDir <> "" Then
Range("C6") = sDir
Range(Cells(9, 2), Cells(1000, 3)).ClearContents
ExFolderSearch sDir, 9, 2
End If
'カウントの開始
If Cells(9, 2) <> "" Then
Call MyCountStart(9, 2)
End If
End Sub
下記のプロシージャを追加してください。
'ファイル内の文字列カウント
Private Function MyCountFile(fname As String) As Long
Dim fn As Long
Dim n As Long
Dim lc As Long
Dim buf As String
'一気に読み込み
fn = FreeFile
buf = Space(FileLen(fname))
Open fname For Binary As #fn
Get #fn, , buf
Close #fn
lc = 0
n = 0
Do
n = InStr(n + 1, buf, Range("C4"))
If n = 0 Then
Exit Do
Else
lc = lc + 1
End If
Loop
MyCountFile = lc
End Function
'カウントの開始
Private Sub MyCountStart(lRow As Long, lCol As Long)
Cells(lRow, lCol + 2) = MyCountFile(Cells(lRow, lCol) & Cells(lRow, lCol + 1))
End Sub