在VBA中逐行读取/parsing文本文件

我试图用VBAparsing文本文件,并返回文本文件中给出的path。
例如,文本文件如下所示:

*Blah blah instructions *Blah blah instructions on line 2 G:\\Folder\...\data.xls D:\\AnotherFolder\...\moredata.xls 

我希望VBA一次加载1行,如果它以*开始,然后移动到下一行(类似于被注释的行)。 对于具有文件path的行,我想把这个path写入单元格,比如A2表示第一个path, B2表示下一个,等等。

我希望能够回答的主要问题是:
1.使用VBA读取文本文件的最佳/简单方法是什么?
2.我该怎么做,一行一行?

对于一个文本文件的最基本的阅读,使用open

例:

 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 

我发现带有TxtStream的FileSystemObject是读取文件最简单的方法

 Dim fso As FileSystemObject: Set fso = New FileSystemObject Set txtStream = fso.OpenTextFile(filePath, ForReading, False) 

然后,使用这个txtStream对象,你可以使用各种intellisense拾取的工具(不像使用FreeFile()方法),所以猜测就less了。 另外,你不必分配一个FreeFile,并希望它自从你分配它的时候实际上仍然是免费的。

你可以阅读一个文件,如:

 Do While Not txtStream.AtEndOfStream txtStream.ReadLine Loop txtStream.Close 

注:这需要参考Microsoft脚本运行时。

为了完整性; 与加载到内存中的数据一起工作;

 dim hf As integer: hf = freefile dim lines() as string, i as long open "c:\bla\bla.bla" for input as #hf lines = Split(input$(LOF(hf), #hf), vbnewline) close #hf for i = 0 to ubound(lines) debug.? "Line"; i; "="; lines(i) next 

您可以使用此代码逐行阅读文本文件,您也可以检查有关第一个字符是“*”,那么你可以离开..

 Public Sub Test() Dim ReadData as String Open "C:\satheesh\myfile\file.txt" For Input As #1 Do Until EOF(1) Line Input #1, ReadData 'Adding Line to read the whole line, not only first 128 positions If Not Left(ReadData, 1) = "*" then '' you can write the variable ReadData into the database or file End If Loop Close #1 End Sub