CSVファイル内に指定した文字列が存在するかを検索するマクロを紹介します。
今回の事例では「test.csv(事前準備必要)」ファイル内に”リンゴ”という文字列が存在しているかを検索して、存在する場合はメッセージボックスが表示されるといった簡単な処理を行います。
Sub CSVファイル内の文字列検索()
Dim fso As Object
Dim file As Object
Dim filePath As String 'ファイル名とパスを指定
Dim filename As Object 'CSVファイル名を取得する用
Dim line As String '読み込み用変数の宣言
Dim searchString As String '検索対象の文字列
'ファイルのパスを指定する
filePath = "C:\test\test.csv"
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile(filePath)
Set filename = fso.GetFile(filePath)
'検索対象の文字列を指定する
searchString = "リンゴ"
'csvファイルを最終行目もしくは検索がヒットするまで繰り返す
Do Until file.AtEndOfStream Or k = 1
line = file.readline
Data = Split(line, ",")
For j = LBound(Data) To UBound(Data)
If InStr(Data(j), searchString) > 0 Then
'検索文字列がヒットしたらk=1でヒットしたフラグ立て
k = 1
End If
Next j
Loop
'csvファイルを閉じる
file.Close
'検索にヒットした場合はファイル名を表示する
If k = 1 Then
MsgBox "文字列「" & searchString & "」が " & filename.Name & " 内で見つかりました。"
End If
End Sub
検索文字列がある場合にはメッセージボックスが表示されます。
今回は1つのファイルを対象に検索を実行しましたが、実際は多量のCSVファイルからデータを探し出すことが多いです。その場合、本マクロを応用しての対応となりますが、それはまた別の機会で紹介します。
コメント