在VBA中逐行读取/解析文本文件

17 浏览
0 Comments

在VBA中逐行读取/解析文本文件

我正在尝试使用VBA解析文本文档,并返回文本文件中给定的路径。例如,文本文件可能如下:

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

我希望VBA每次加载一行,如果以 * 开头,则移到下一行(类似于该行被注释)。对于具有文件路径的行,我希望将该路径写入单元格,例如将第一个路径写入单元格A2,下一个写入单元格B2等。

我希望得到解答的主要问题是:

  1. 使用VBA读取文本文件的最佳/简单方法是什么?
  2. 如何逐行执行该操作?
admin 更改状态以发布 2023年5月21日
0
0 Comments

我发现使用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进行引用。

0
0 Comments

对于最基本的文本文件读取,使用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语句——这已在注释中解释,而且不需要作为对于这个答案的改进。

0