在VBA中逐行读取/解析文本文件
在VBA中逐行读取/解析文本文件
我正在尝试使用VBA解析文本文档,并返回文本文件中给定的路径。例如,文本文件可能如下:
*Blah blah instructions *Blah blah instructions on line 2 G:\\Folder\...\data.xls D:\\AnotherFolder\...\moredata.xls
我希望VBA每次加载一行,如果以 *
开头,则移到下一行(类似于该行被注释)。对于具有文件路径的行,我希望将该路径写入单元格,例如将第一个路径写入单元格A2
,下一个写入单元格B2
等。
我希望得到解答的主要问题是:
- 使用VBA读取文本文件的最佳/简单方法是什么?
- 如何逐行执行该操作?
admin 更改状态以发布 2023年5月21日
我发现使用TxtStream的FileSystemObject是最简单的读取文件的方法
Dim fso As FileSystemObject: Set fso = New FileSystemObject Set txtStream = fso.OpenTextFile(filePath, ForReading, False)
然后使用txtStream
对象,你有各种Intellisense自动提示的工具(不像使用FreeFile()
方法那样需要猜测),因此减少了猜测的过程。此外,你不必分配一个FreeFile,并希望它实际上仍然空闲,因为当你分配它时。
你可以像这样读取一个文件:
Do While Not txtStream.AtEndOfStream txtStream.ReadLine Loop txtStream.Close
注意:这需要对Microsoft Scripting Runtime进行引用。
对于最基本的文本文件读取,使用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
#作者注:请停止加入close #FileNum
语句——这已在注释中解释,而且不需要作为对于这个答案的改进。