【问题标题】:Extract text from a text file with Chinese characters using vba使用vba从带有中文字符的文本文件中提取文本
【发布时间】:2016-01-23 09:05:07
【问题描述】:

我有一批大约 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。 我能发现的唯一不同是这次文本文件包含一些汉字,实际上我并不感兴趣。这就是为什么我认为这是问题的根源。 汉字出现在文件的第一行。

感谢任何帮助。谢谢!

【问题讨论】:

  • 抱歉错过了。汉字也出现在倒数第三行。
  • PathAndName = "C:\File_" & i & ".ext" 应该是 PathAndName = "C:\File_" & i & ".txt"。并在Next i之前添加Close TextFile

标签: vba excel


【解决方案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

【讨论】:

    猜你喜欢
    • 2023-04-04
    • 2011-06-08
    • 2016-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-18
    相关资源
    最近更新 更多