Excelでフォルダ内文字列検索ソフトを作ってみよう

Step 7 見つかった文字位置の前後10文字を表示する

ファイル内検索を2回に分けました。
1回目で文字が含まれているかチェックし、2回目で見つかった位置の行番号と文を表示するようにしました。
列はファイル名+1右に、行は+1下に移動していきます。


Homeへ > Excelでアプリケーションソフト2 > フォルダ内文字列検索ソフト

シート画面

ファイル内から文字「name」を検索しています。
見つかればその行番号と前後10文字を表示しています。
ファイル探索画面


コード

下記のVBAコードに変更してください。

'ファイルを開き読む
Private Function MyFileRead(fname As String, ByRef lr As Long, lc As Long) As Boolean
    Dim lLine As Long
    Dim lPos As Long
    Dim s1 As String
    Dim fn As Long
    Dim tmp As String
    
    lLine = 0
    fn = FreeFile
    'ファイルを開く
    Open fname For Input As #fn
        Do Until EOF(fn)
            '一行読込み
            Line Input #fn, tmp
            lLine = lLine + 1
            lPos = InStr(1, tmp, TextBox1.Value)
            If lPos <> 0 Then
                If lPos - 10 < 1 Then
                    s1 = Mid(tmp, 1, 20)
                Else
                    s1 = Mid(tmp, lPos - 10, 20)
                End If
                lr = lr + 1
                Cells(lr, lc + 2) = lLine & ": " & s1
            End If
        Loop
    Close #fn
End Function

下記のVBAコードを追加してください。

'ファイルを一気に読み込みチェック
Private Function MyFileFirstRead(fname As String) As Boolean
    Dim fn As Long
    Dim buf As String
    
    fn = FreeFile
    buf = Space(FileLen(fname))
    Open fname For Binary As #fn
        Get #fn, , buf
    Close #fn
    
    If InStr(1, buf, TextBox1.Value) = 0 Then
        MyFileFirstRead = False
        Exit Function
    End If
    MyFileFirstRead = True
   
End Function


Homeへ > Excelでアプリケーションソフト2 > フォルダ内文字列検索ソフト

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved