Yes, I understand and my code allows line 1 to be bypassed and is not used in the output as instructed in post 7. I am sure there is more than one way to accomplish 'bypassing' line 1.
Header not located on line 2 is another issue altogether.
Why would you expect or depend on user to know which line header is on? This just allows for human error and corrupted output. Will header always be same text? Arnel has right idea to pull header row. Here is my version - tested and works.
'get the header
Do While Not TSRead.AtEndOfStream
strH = TSRead.readline & vbCrLf
If Left(strH, 1) = "C" Then Exit Do
Loop