dan*_*ran 52 excel vba excel-vba
我正在尝试使用VBA解析文本文档并返回文本文件中给出的路径.
例如,文本文件看起来像:
*Blah blah instructions
*Blah blah instructions on line 2
G:\\Folder\...\data.xls
D:\\AnotherFolder\...\moredata.xls
Run Code Online (Sandbox Code Playgroud)
我希望VBA一次加载1行,如果它以a开头,*则移动到下一行(类似于被注释的那行).对于带有文件路径的行,我想将该路径写入单元格,例如A2第一条路径,B2下一条路径等.
我希望回答的主要内容是:
1.使用VBA读取文本文件的最佳/简单方法是什么?
2.我该如何逐行完成?
Sea*_*anC 66
对于最基本的文本文件读取,请使用 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
Run Code Online (Sandbox Code Playgroud)
Bra*_*rad 35
我发现带有TxtStream的FileSystemObject是读取文件的最简单方法
Dim fso As FileSystemObject: Set fso = New FileSystemObject
Set txtStream = fso.OpenTextFile(filePath, ForReading, False)
Run Code Online (Sandbox Code Playgroud)
然后使用此txtStream对象,您可以使用各种智能感知工具(与使用该FreeFile()方法不同),因此可以减少猜测.另外,你不必分配一个FreeFile,并希望它自从你分配它以来它实际上仍然是免费的.
您可以读取如下文件:
Do While Not txtStream.AtEndOfStream
txtStream.ReadLine
Loop
txtStream.Close
Run Code Online (Sandbox Code Playgroud)
注意:这需要引用Microsoft Scripting Runtime.
Ale*_* K. 31
为了完整; 使用加载到内存中的数据;
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
Run Code Online (Sandbox Code Playgroud)