Sub KeepLastLinesOfTextFile()
'Erik Van Geit
'091015
'delete all lines in a textfile except the last ones
Dim LineIn As String
Dim FirstLine As Long
Dim i As Long
Dim j As Long
Dim arr() As Variant
Const FileNm As String = "C:\test.txt"
Const NrLines = 10 'number of lines to keep
ReDim arr(1 To NrLines)
'count total number of lines
Open FileNm For Input As #1
Do While Seek(1) <= LOF(1)
Line Input #1, LineIn
i = i + 1
Loop
Close #1
If i < NrLines + 1 Then Exit Sub
FirstLine = i - NrLines + 1
'get last lines
Open FileNm For Input As #1
i = 0
Do While Seek(1) <= LOF(1)
Line Input #1, LineIn
i = i + 1
If i >= FirstLine Then
j = j + 1
arr(j) = LineIn
End If
Loop
Close #1
'write only last lines
Open FileNm For Output As #1
Print #1, Join(arr, vbNewLine)
Close #1
End Sub