Excel如何将多列内容导出为独立TXT文件并解决多语言乱码问题
问题原因
原版代码使用VBA内置Open语句输出文件时,默认采用ANSI编码,仅能兼容当前系统默认语言的字符,超出编码范围的多语言字符就会被替换为问号。
修复后的代码
采用UTF-8编码流输出方案,无需手动配置引用,新手可直接运行:
Sub export_data() Dim row As Integer, column As Integer, i As Integer, j As Integer Dim fullPath As String, myFile As String Dim stream As Object ' 自定义配置区,可按需修改 fullPath = "C:\Workspace" ' 导出文件保存的文件夹路径 row = 21 ' 需要导出的最后一行行号 column = 5 ' 需要导出的列数 ' 创建UTF-8编码流对象 Set stream = CreateObject("ADODB.Stream") With stream .Charset = "UTF-8" .Mode = 3 ' adModeReadWrite .Type = 2 ' adTypeText End With For i = 1 To column ' 生成导出文件名,取第一行单元格内容作为文件名 myFile = Cells(1, i).Value & ".txt" myFile = fullPath & "\" & myFile stream.Open ' 逐行写入当前列的内容 For j = 2 To row stream.WriteText Cells(j, i).Value & vbCrLf Next j ' 覆盖保存到本地文件 stream.SaveToFile myFile, 2 ' adSaveCreateOverWrite stream.Close Next i ' 释放对象 Set stream = Nothing MsgBox "所有列导出完成!" End Sub
注意事项
- 输出的TXT文件为通用UTF-8编码,支持所有语种字符,不会再出现乱码问题。
- 可根据实际需求修改自定义配置区的三个参数:导出路径、结束行号、导出列数。
- 若第一行的列名包含Windows文件名不允许的特殊字符(如
\/:*?"<>|),建议提前修改列名避免报错。
内容的提问来源于stack exchange,提问作者Emile van der Merwe
相关产品推荐
相关产品推荐

