我有一批大约 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
这次,脚本返回错误“Input Past End of File”错误 62。
我能发现的唯一不同是这次文本文件包含一些汉字,实际上我并不感兴趣。这就是为什么我认为这是问题的根源。
汉字出现在文件的第一行。
任何帮助表示赞赏。谢谢!
最佳答案
我怀疑您的文本文件现在采用多字节编码。有一个字符被编码为两个或三个字节。所以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
自己先。
关于vba - 使用vba从带有中文字符的文本文件中提取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34961611/