You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Excel VBA宏打开UTF-8无BOM编码CSV文件解决日文乱码问题

日文CSV乱码问题VBA解决方案

认知确认

你提到的Notepad++录制的宏无法在VBA中使用的认知是正确的,二者属于完全独立的宏体系,语法、运行环境均不互通,无法直接复用。

可用VBA宏代码

下面提供两种常用实现,可根据需求选择:

方案1:直接以UTF-8无BOM编码打开单个CSV文件(最简实现)

Sub OpenUTF8CSV()
    Dim filePath As Variant
    ' 选择要打开的CSV文件
    filePath = Application.GetOpenFilename("CSV文件 (*.csv), *.csv", Title:="选择要打开的CSV文件")
    If filePath = False Then Exit Sub
    ' Origin:=65001 对应UTF-8编码,Comma:=True代表按逗号分割,可根据实际分隔符调整参数
    Workbooks.OpenText Filename:=filePath, Origin:=65001, DataType:=xlDelimited, Comma:=True
End Sub

方案2:批量转换指定文件夹下所有CSV编码,转换后可直接正常打开

如果需要处理数百个文件,建议用该批量方案:

Sub BatchProcessCSV()
    Dim folderPath As String
    Dim fileName As String
    
    ' 选择待处理CSV所在文件夹
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "选择存放CSV文件的文件夹"
        If .Show <> -1 Then Exit Sub
        folderPath = .SelectedItems(1) & "\"
    End With
    
    fileName = Dir(folderPath & "*.csv")
    Do While fileName <> ""
        ' 以UTF-8编码打开CSV后另存为标准Excel可识别格式,也可按需修改为保存为新CSV
        Workbooks.OpenText Filename:=folderPath & fileName, Origin:=65001, DataType:=xlDelimited, Comma:=True
        ActiveWorkbook.SaveAs Filename:=folderPath & "已处理_" & Replace(fileName, ".csv", ".xlsx"), FileFormat:=xlOpenXMLWorkbook
        ActiveWorkbook.Close SaveChanges:=False
        fileName = Dir
    Loop
    
    MsgBox "批量处理完成,已处理文件前缀为【已处理_】,打开无乱码"
End Sub

使用步骤

  1. 打开Excel,按Alt+F11调出VBA编辑器
  2. 右键左侧工程栏,选择「插入」-「模块」
  3. 将上述代码粘贴到模块窗口中
  4. 按F5运行对应宏即可

注意:如果CSV的分隔符不是逗号,可将代码中Comma:=True替换为对应分隔符参数,比如制表符对应Tab:=True、分号对应Semicolon:=True。

内容的提问来源于stack exchange,提问作者user12280866

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 00:15:02