Typically, you read and process a text file by using a loop and VB’s Line Input statement:
Do While Not Eof(1) Line Input #1, myStringVar$ ' process the line hereLoop
However, you might want to defer processing or keep a copy of all the lines read for repeat processing or selective editing before writing them out again. You can achieve this quite easily by using VB’ Get# and Split() statements to read the entire file at once and split it into an array containing all the lines. For example, this function returns the complete contents of a file as a string:
Public Function ReadFile(ByVal FileName As String) _ As String Dim hFile As Long Dim bBuf() As Byte hFile = FreeFile Open FileName For Binary Access Read As #hFile If LOF(hFile) >hen ReDim bBuf(1 To LOF(hFile)) As Byte Get #hFile, , bBuf Close #hFile ReadFile = StrConv(bBuf, vbUnicode) End IfEnd Function
This code snippet drops the contents into an array, using the line break (vbCrLf) as a delimiter:
Dim sLines() As String Dim sAll As String Dim i As Long ' Read the contents of some file sAll = ReadFile("c:form1.frm") ' Split into individual lines sLines = Split(sAll, vbCrLf)
You can then process the file as desired; for example, you can search for specific lines:
For i = LBound(sLines) to UBound(sLines) If Instr(1, "SomeText", sLines(i), _ vbTextCompare) Then sLines(i) = "SomeOtherText" End If Next i