You are on page 1of 3

12/22/2015

excel ­ Read/Parse text file line by line in VBA ­ Stack Overflow
 

 

sign up

log in

tour

help 

 

Sign up   ×

Stack Overflow is a community of 4.7 million programmers, just like you, helping each other. Join them; it only takes a minute:

Read/Parse text file line by line in VBA

I'm trying to parse a text document using VBA and return the path given in the text file.
For example, the text file would look like:
*Blah blah instructions 
*Blah blah instructions on line 2
G:\\Folder\...\data.xls 
D:\\AnotherFolder\...\moredata.xls

I want the VBA to load 1 line at a time, and if it starts with a  *  then move to the next line (similar to that line being commented). For the
lines with a file path, I want to write that path to cell, say  A2  for the first path,  B2  for the next, etc.
The main things I was hoping to have answered were:
1. What is the best/simple way to read through a text file using VBA?
2. How can I do that line by line?
excel   vba   excel­vba
edited Apr 28 '14 at 5:35

asked Jul 17 '12 at 18:33

L42
11.5k

dancran
5

16

39

126

1

2

12

4 Answers

for the most basic read of a text file, use 

open

example:
Dim FileNum As Integer
Dim DataLine As String
FileNum = FreeFile()
Open "Filename" For Input As #FileNum 
While Not EOF(FileNum)
    Line Input #FileNum, DataLine ' read in data 1 line at a time
    ' decide what to do with dataline, 
    ' depending on what processing you need to do for each case
Wend
edited Mar 5 '13 at 14:07

answered Jul 17 '12 at 18:48

SeanC
10.2k

5

17

42

1   I'm a little late to the party, but Line Input has problems with anything other than strictly a CR or CRLF
combination (i.e. LF on its own) ­ FSO has no such problems (but yeah, is probably a little bit slower) –
 Cor_Blimey  Aug 20 '13 at 21:28
6   Remember Close #FileNum at the end! – Magnus Smith May 26 '14 at 11:15
    For anyone else wondering:  DataLine  excludes the terminating  CR  or  CRLF  (source) – Felipe May 11 at
15:35 

http://stackoverflow.com/questions/11528694/read­parse­text­file­line­by­line­in­vba

1/3

 vbnewline) close #hf  for i = 0 to ubound(lines)     debug. "=". but assumes the file will fit into memory  – Chris Kimpton May 31 '13 at 7:36 I find the FileSystemObject with a TestStream to be the easiest way to read files Dim fso As FileSystemObject: Set fso = New FileSystemObject  Set txtStream = fso.1k satheesh kumar 3 18 51 http://stackoverflow.7k 12 123 165 1   This is the correct answer. i. False) Then with this  txtStream  object you have all sorts of tools which intellisense picks up (unlike using the  FreeFile()  method) so there is less guesswork. i as long open "c:\bla\bla. edited Jun 19 '13 at 17:18 answered Jul 17 '12 at 19:59 Brad 6. but FSO will often fail to run due to security restrictions.671 2 15 45     thanks for the reply Brad.com/questions/11528694/read­parse­text­file­line­by­line­in­vba 60 1 1 8 2/3 . lines(i) next answered Jul 18 '12 at 13:06 Alex K. not only first 128  positions     If Not Left(ReadData. and it is significantly slower. I think this also will accomplish what I wanted just fine –  dancran  Jul 17 '12 at 21:29 You Can use this code to read line by line in text file and You could also check about the first character is "*" then you can leave that.. You can read a file like: Do While Not txtStream.txt" For Input As #1     Do Until EOF(1)          Line Input #1. Plus you don' have to assign a FreeFile and hope it is actually still free since when you assigned it. You can do the same in FileSystemObject.ReadLine  Loop txtStream. ReadData 'Adding Line to read the whole line. 1) = "*" then        '' you can write the variable ReadData into the database or file     End If       Loop     Close #1 End Sub edited Apr 29 at 16:22 answered Dec 26 '12 at 17:09 GJK 12.. #hf).. 92.AtEndOfStream      txtStream.Close NOTE: This requires a reference to Microsoft Scripting Runtime. – Nile Jul 18 '12 at 17:00 1   .? "Line". Public Sub Test()     Dim ReadData as String     Open "C:\satheesh\myfile\file. ForReading.12/22/2015 excel ­ Read/Parse text file line by line in VBA ­ Stack Overflow For completeness; working with the data loaded into memory; dim hf As integer: hf = freefile  dim lines() as string.OpenTextFile(filePath.bla" for input as #hf      lines = Split(input$(LOF(hf).

com/questions/11528694/read­parse­text­file­line­by­line­in­vba 3/3 .12/22/2015 excel ­ Read/Parse text file line by line in VBA ­ Stack Overflow http://stackoverflow.