VBA转换TXT文档编码(UTF-8转换为ANSI)

本文介绍了一个VBA函数UTF8TOANSI,用于将UTF-8编码的TXT文档转换为ANSI,以便在Excel中正确读取,避免乱码。函数接收文件路径作为输入,会生成一个新的ANSI编码的TXT文件。
摘要由CSDN通过智能技术生成

        当我们使用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

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TOMaster.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值