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を実行するまでの手順
- Excelを開き、Alt + F11キーを押して、VBAエディタを開きます。
- 「挿入」メニューから「モジュール」を選択し、新しいモジュールを作成します。
- VBAエディタにコードを記述します。
- コード内の「検索したい文字列」を、実際に検索したい文字列に置き換えます。
- 「実行」ボタンをクリックして、コードを実行します。
コメント