Reading the Last X Lines From a Text File
If you are working with very large text files, and only want to read the last few lines, looping through the whole file line by line until you get to the end can be very time-consuming. In that case it's better to open the file in binary mode, and work backwards from the end.
This function will open a file, and read the last x lines of text from it. It starts from the end of the file and searches for line breaks, working backwards until it's either found enough line breaks, or reached the beginning of the file.
Function LastXLines(Path As String, NumLines As Long) Dim FF As Integer Dim lngCounter As Long Dim lngPos As Long Dim strData As String FF = FreeFile 'we are looking For 2 characters occurring together: vbCr & vbLf 'so we make a 2-character buffer strData = Space$(2) Open Path For Binary As #FF 'start at the End of the file lngPos = LOF(FF) Do Until lngCounter = NumLines Or lngPos = 1 'take one Step back lngPos = lngPos - 1 'get 2 characters Get #FF, lngPos, strData 'is it a New line? If strData = vbCrLf Then lngCounter = lngCounter + 1 Loop 'move past the last found vbCrLf If lngPos > 1 Then lngPos = lngPos + 2 'make space In the String For the rest of the file strData = Space$(LOF(FF) - lngPos + 1) 'read the data Get #FF, lngPos, strData Close #FF LastXLines = strData End Function