我有一批像100,000个文本文件,我想用vba提取为字符串。 在过去,我一直这样做没有问题:
Sub Main()
Dim PathAndName As String
Dim TextFile As Integer
Dim TextString() As String
Redim TextString(100000)
For i = 1 To 100,000
PathAndName = "C:\File_" & i & ".ext"
TextFile = 1
Open PathAndName For Input As TextFile
TextString(i) = Input(LOF(TextFile), TextFile)
Next i
End Sub
这次,脚本返回错误“输入过去的文件结束”错误62。 我能看到的唯一不同的是,这次文本文件包含一些汉字,实际上并不是我感兴趣的。这就是为什么我认为这是问题的根源。 汉字出现在文件的第一行。
感谢任何帮助。谢谢!
答案 0 :(得分:1)
我怀疑你的文本文件现在是多字节编码。有一个字符以两个或三个字节编码。因此LOF(TextFile)
不会返回正确的字符数,而是返回字节数。但Input(LOF(TextFile), TextFile)
需要字符数,因为它必须创建String
。
您可以使用:
Sub Main()
Dim PathAndName As String
Dim TextFile As Integer
Dim TextString() As String
Redim TextString(100000)
For i = 1 To 100000
PathAndName = "C:\File_" & i & ".ext"
TextFile = 1
Open PathAndName For Input As TextFile
Dim sLine As String
Dim sTextString As String
sLine = ""
sTextString = ""
Do While Not EOF(TextFile)
Input #TextFile, sLine
sTextString = sTextString & sLine
Loop
TextString(i) = sTextString
Close #TextFile
Next i
End Sub
但更好的方法是使用ADODB.Stream
而不是恐龙VB文件访问方法。但这是一种完全不同的方法。所以你应该首先阅读ADODB.Stream
。