ABCD SPACE个人博客上线啦~~~

VBA按照指定编码格式读取文本文件

您可以在大约3分钟内阅读这篇文章。
VBA按照指定编码格式读取文本文件

函数

' 函数名称:comm_read_textFile
' 功能:按照指定编码格式读取文本文件
' 说明:以文本流的方式读取指定编码格式的文本文件
' 参数:
'   - filePath:文件路径(例:"D:\VBA\UTF-8.txt")
'   - encoding:文件的编码格式(例:"UTF-8")
'   - size:从文件中读取指定字符数(-1:读取整个文件)
' 返回值:读取的文件内容
Function comm_read_textFile(filePath As String, encoding As String, size As Long) As String
    Dim fileValues As String    ' 文件内容
    Dim fileObject As Object    ' 文件对象
    
    ' 创建文件对象
    Set fileObject = CreateObject("ADODB.Stream")
    
    ' 指定文件编码格式
    fileObject.Charset = encoding
    
    ' 指定流类型(2:adTypeText文本流,用于读取和写入文本数据。)
    fileObject.Type = 2
    
    ' 打开文件对象
    fileObject.Open
    
    ' 将filePath路径的文件内容加载到文件对象中
    fileObject.LoadFromFile filePath
    
    ' 从文件中读取size个字符保存到fileValues
    fileValues = fileObject.ReadText(size)
    
    ' 关闭文件对象
    fileObject.Close
    
    ' 返回文件内容
    comm_read_textFile = fileValues
End Function

演示

■编码格式为UTF-8的文本文件

读取整个文件内容

' 调试代码
Debug.Print comm_read_textFile("D:\VBA\UTF-8.txt", "UTF-8", -1)

■执行结果

读取指定字符数的文件内容

1、读取文件的前20个字符

' 调试代码
Debug.Print comm_read_textFile("D:\VBA\UTF-8.txt", "UTF-8", 20)

■执行结果

※从结果上看,1个汉字也是按照1个字符输出的。


2、读取文件的前27个字符

' 调试代码
Debug.Print comm_read_textFile("D:\VBA\UTF-8.txt", "UTF-8", 27)

■执行结果

※从结果上看,由于是Windows的回车换行[CR][LF],所以回车换行占2个字符。


谢谢打赏

评论