LineCountFSO




Function lineCount(myInFile As String) As Long
Dim lFileSize As Long, lChunk As Long
Dim bFile() As Byte
Dim lSize As Long
Dim strText As String

'the size of the chunk to read in. You can experiment

'with this to see what works fastest.


lSize = CLng(1024) * 10

'size the array to the chunk size

ReDim bFile(lSize - 1) As Byte

Open myInFile For Binary As #1
'get the file size

lFileSize = LOF(1)

'set the chunk number to 1

lChunk = 1

Do While (lSize * lChunk) < lFileSize
'get the data from the in file

Get #1, , bFile
strText = StrConv(bFile, vbUnicode)
'get the line count for this chunk

lineCount = lineCount + searchText(strText)
'increment the chunk count

lChunk = lChunk + 1
Loop
'redim the array to the remaining size

ReDim bFile((lFileSize - (lSize * (lChunk - 1))) - 1) As Byte
'get the remaining data

Get #1, , bFile
strText = StrConv(bFile, vbUnicode)
'get line count for this chunk

lineCount = lineCount + searchText(strText)
'close the file

Close #1
lineCount = lineCount + 1
End Function

Private Function searchText(strText As String) As Long
Static blPossible As Boolean
Dim lp1 As Long
'if we have a possible line count

If blPossible = True Then
'if the fist charcter is chr(10) then wehave a new line

If Left$(strText, 1) = Chr(10) Then
searchText = searchText + 1
End If
End If
blPossible = False
'loop through counting vbCrLf's

lp1 = 1
Do
lp1 = InStr(lp1, strText, vbCrLf)
If lp1 <> 0 Then
searchText = searchText + 1
lp1 = lp1 + 2
End If
Loop Until lp1 = 0

'if the last character is a chr(13) thenwe may have a

'new line, so we mark it as possible


If Right$(strText, 1) = Chr(13) Then
blPossible = True
End If
End Function

Returns:
The number of lines contained in the passed filename.

Assumes:
After being asked many times how you count the number
of lines in a text file, i decided to write a function
that would do it as quickly as possible.
This Function reads the file In in chunks. When it reads
a chunk in, it counts the number of lines in that chunk,
before reading the Next chunk, and so on. You may find a
different chunk size works better For you, feel free To
experiment With it.












( linecountfso.html )- by Paolo Puglisi - Modifica del 17/12/2023