VBA将TXT文档的UTF-8编码转换为ANSI
2024-01-10 07:22:25
? ? ? ? 当我们使用VBA语句直接读取txt文档或将其导入到Excel工作簿时,如果遇到UTF-8编码的文档经常会出现乱码,因此我们需要将txt文档的编码转换为ANSI后再读取。下面是我编写的一个将UTF-8编码换为ANSI编码的函数UTF8TOANSI,这个函数只需要一个参数filePath,它是指TXT文档的路径,使用它转换之后会生成一个同名文件加“_ANSI”的txt文档。关于该函数的使用方法,详见《VBA读取txt文档指定行与列的值》一文。
Function UTF8TOANSI(filePath As String)
'
' 将TXT编码UTF8转换为ANSI
Dim fso As Object
Set fso = CreateObject("scripting.filesystemobject")
If Not fso.fileExists(filePath) Then
MsgBox "txt文件" & filePath & "不存在" & vbCrLf & vbCrLf & "UTF8转ANSI失败!", vbOKOnly + vbCritical, "错误"
UTF8TOANSI = False
Exit Function
End If
Dim txtFile1, txtFile2 As String, columnIndex As Integer
txtFile1 = filePath
txtFile2 = Left(filePath, Len(filePath) - 4) & "_ANSI.txt"
If fso.fileExists(txtFile2) Then fso.DeleteFile (txtFile2) ' 检查并删除旧文件
' 开始转换
Dim ADOStrm As Object, txtStr As String
Set ADOStrm = CreateObject("ADODB.Stream")
ADOStrm.Type = 2
ADOStrm.Mode = 3
ADOStrm.Charset = "utf-8"
ADOStrm.Open
ADOStrm.LoadFromFile txtFile1 ' 加载TXT文本 txtFile1
txtStr = ADOStrm.ReadText
ADOStrm.Position = 0
ADOStrm.Charset = "gbk"
ADOStrm.WriteText txtStr
ADOStrm.SetEOS
ADOStrm.SaveToFile txtFile2, 2 ' 输出TXT文本 txtFile2
ADOStrm.Close
Set ADOStrm = Nothing
Set fso = Nothing
UTF8TOANSI = True
End Function
文章来源:https://blog.csdn.net/bigtoothcat/article/details/135492658
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!