Excelでフォルダ内の複数のテキストファイルのgrep(探したい文字列を検索し行を抽出)する方法

Excelには、フォルダ内の複数のテキストファイルの中身をlinuxのgrep機能のような機能ありません。VBA(Visual Basic for Applications)を使用することで、ファイル内を探したい文字列を検索し行を抽出するというgrepに近い機能をExcelに実装することができます。

具体的には、VBAエディタに以下のコードを記述し、VBAを実行します。

実行すると、指定されたフォルダ内のすべてのテキストファイルを開き、指定された文字列を検索します。

Sub Excelgrep()
Dim MyFolder As String
Dim MyFile As String
Dim text As String
Dim i As Integer
Dim j As Integer
MyFolder = "C:\MyFolder\" '検索したいフォルダのパスを指定
MyFile = Dir(MyFolder & "\*.*") 'すべてのファイルを検索
i = 1 'セルの行を初期化
Do While MyFile <> ""
Open MyFolder & "\" & MyFile For Input As #1 'ファイルを開く
j = 1 'セルの列を初期化
Do While Not EOF(1) 'ファイルを1行ずつ読み込み
Line Input #1, text
If InStr(1, text, "検索したい文字列") > 0 Then '文字列が見つかったら
Cells(i, j).Value = MyFile 'ファイル名を書き込む
Cells(i, j + 1).Value = text '検索文字列を書き込む
i = i + 1 '次の行に移動
j = j + 1 '次の列に移動
Loop
Close #1 'ファイルを閉じる
MyFile = Dir '次のファイルを検索
Loop
End Sub

VBAを実行するまでの手順

  1. Excelを開き、Alt + F11キーを押して、VBAエディタを開きます。
  2. 「挿入」メニューから「モジュール」を選択し、新しいモジュールを作成します。
  3. VBAエディタにコードを記述します。
  4. コード内の「検索したい文字列」を、実際に検索したい文字列に置き換えます。
  5. 「実行」ボタンをクリックして、コードを実行します。

コメント

タイトルとURLをコピーしました