Как подсчитать количество найденных строк в файлах - PullRequest
0 голосов
/ 28 января 2019

Я использую этот код для поиска во всех соответствующих файлах в папке.

Как я могу добавить количество раз, когда строка найдена в каждом файле, чтобы я мог вернуть это число?Если это имеет значение, я знаю, что искомая строка будет найдена только один раз в каждой строке текста.

Я перепробовал несколько случайных вещей, но получил только «1», что я знаюложь.

Sub StringExistsInFile()

    Dim theString As Variant
    Dim path As String
    Dim StrFile As String
    Dim fso As New FileSystemObject
    Dim file As TextStream
    Dim line As String

    theString = Userform1.TextBox1.Text
    path = "P:\prg\"
    StrFile = Dir(path & "*.dp")


    Do While StrFile <> ""

        Set file = fso.OpenTextFile(path & StrFile)

        Do While Not file.AtEndOfLine

            line = file.ReadLine
            If InStr(1, line, theString, vbTextCompare) > 0 Then
                Userform1.ListBox1.AddItem (StrFile)
                Exit Do
            End If

        Loop

        file.Close

        Set file = Nothing
        Set fso = Nothing

        StrFile = Dir()

    Loop

End Sub

1 Ответ

0 голосов
/ 28 января 2019

Ваш код остановился на первой пустой строке в каждом файле, пока вы не зациклились до AtEndOfLine.Пожалуйста, попробуйте это:

Sub StringExistsInFile()
    Dim theString As Variant
    Dim path As String
    Dim StrFile As String
    Dim fso As New FileSystemObject
    Dim file As TextStream
    Dim line As String        
    Dim amount As Long
    Dim theResult as String

    theString = Userform1.TextBox1.Text
    path = "P:\prg\"
    StrFile = Dir(path & "*.dp")

    Do While StrFile <> ""
        Set file = fso.OpenTextFile(path & StrFile)
        amount = 0
        Do While Not file.AtEndOfStream
            line = file.ReadLine
            If InStr(1, line, theString, vbTextCompare) > 0 Then
                amount = amount + 1
            End If
        Loop
        If amount > 0 Then
            Userform1.ListBox1.AddItem (StrFile & ": " & theString & " = " & amount)
        End If
        file.Close
        Set file = Nothing
        Set fso = Nothing
        StrFile = Dir()
    Loop
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...