从使用vba的中文字符的文本文件中提取文本

我有一批像100,000个文本文件,我想提取作为string使用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过去的文件结束”错误62.唯一不同的是我可以发现的是,这次文本文件包含一些中文字符,这实际上并不是我的兴趣所在。 这就是为什么我认为这是问题的根源。 汉字出现在文件的第一行。

任何帮助表示赞赏。 谢谢!

我怀疑你的文本文件现在是在一个多字节编码。 有一个字符以两个或三个字节编码。 所以LOF(TextFile)将不会返回正确的字符数,而是字节数。 但是Input(LOF(TextFile), TextFile)需要字符数,因为它必须创build一个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