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

标签 vba excel

我有一批大约 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/

相关文章:

python - 如何使用 win32com.client 通过 python 将 XLA 添加到 Excel 中?

excel - 如何在 Excel 中跨列处理多个 IFTHEN 查询?

python - 如何将过滤后的excel表格导入python?

c# - .Net 程序集注册和依赖问题

excel - 用数字和连接的数字对表进行排序

python - Xlsxwriter 将 pandas DataFrame 输出格式化为 Excel 时出现问题

ms-access - 无法使用 VBA 清除办公室剪贴板

excel - VBA 帮助。简单的代码帮助。使事件单元格成为第一个值>100的单元格

vba - 在VBA中控制IE11 "Do you want to Open/Save"对话窗口按钮

vba - 如何使用命令提示符列出目录中的文件名但排除第一个 3 个字符