本地文本文件中可能存在同时中英文,可以使用VBA逐行读取。以下是一个示例代码,可根据实际情况进行修改:

Sub ReadTextFile()
    Dim filePath As String
    Dim fso As Object
    Dim ts As Object
    Dim line As String
    
    filePath = "C:\Test\test.txt" '需要读取的文件路径
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.OpenTextFile(filePath, 1)
    
    Do While Not ts.AtEndOfStream
        line = ts.ReadLine
        '对读取的每一行进行处理,例如输出到调试窗口
        Debug.Print line
    Loop
    
    ts.Close
    Set ts = Nothing
    Set fso = Nothing
End Sub

在上述代码中,可以通过修改filePath变量的值来指定需要读取的文件路径。然后使用FileSystemObject对象的OpenTextFile方法打开该文件,参数1表示以只读方式打开。通过循环读取每一行,使用ReadLine方法获取每一行的内容。最后关闭文件并释放对象。

需要注意的是,如果文本文件保存为ANSI编码,直接读取可能会出现乱码的情况,可以使用ADODB.Stream对象进行转换。如果文本文件采用无BOM的UTF-8编码,也需要进行转换。可以参考以下代码:

Sub ReadTextFile()
    Dim filePath As String
    Dim fso As Object
    Dim ts As Object
    Dim line As String
    
    filePath = "C:\Test\test.txt" '需要读取的文件路径
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.OpenTextFile(filePath, 1)
    
    Do While Not ts.AtEndOfStream
        line = ts.ReadLine
        '对读取的每一行进行处理,例如输出到调试窗口
        Debug.Print line
    Loop
    
    ts.Close
    Set ts = Nothing
    Set fso = Nothing
End Sub

'转换编码
Function ConvertEncoding(str As String, srcEncoding As String, dstEncoding As String) As String
    Dim stream As Object
    
    Set stream = CreateObject("ADODB.Stream")
    stream.Mode = 3 '以二进制方式打开
    stream.Type = 1 '文本流
    stream.Charset = srcEncoding
    stream.Open
    stream.WriteText str
    stream.Position = 0
    stream.Charset = dstEncoding
    ConvertEncoding = stream.ReadText(-1)
    stream.Close
    Set stream = Nothing
End Function

Sub TestConvertEncoding()
    Dim str As String
    Dim str2 As String
    
    str = "测试"
    str2 = ConvertEncoding(str, "GB2312", "UTF-8")
    
    Debug.Print str2 '输出:测�?
End Sub

在上述代码中,ConvertEncoding函数用于将指定编码的字符串转换为另一种编码。使用ADODB.Stream对象打开文本流,将字符串写入,然后设置字符集并读取转换后的字符串。在使用时,需要将需要转换的字符串、原始编码和目标编码作为参数传入函数中

本地文本文件可能存在同时中英文可能以ansi和无bom的utf8保存怎么用vba逐行读取

原文地址: https://www.cveoy.top/t/topic/g2k7 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录