Excel VBA批量按行导出MD文件(A为文件名、B-H为内容)方案咨询
解决Excel批量导出无BOM UTF-8格式MD文件的VBA方案
方案特性
- 支持导出B到H列内容,默认按列换行拼接,和原有谷歌脚本输出格式一致
- 完全消除多余引号问题,单元格原有合法引号会完整保留
- 生成标准无BOM UTF-8格式文件,兼容全平台markdown编辑器
- 全量读入数组处理,7000行数据可一次性导出,无需分批
完整VBA代码
Sub ExportToMD_UTF8_NoBOM() Dim dataArr As Variant Dim lngRow As Long, col As Long Dim StrFolder As String Dim fileContent As String Dim stream As Object Dim utf8Bytes As Variant ' 请修改为你实际要存储MD文件的文件夹路径 StrFolder = "C:\temp" ' 一次性读取A到H列所有有效行到数组,大幅提升处理效率 dataArr = Range([A1], Cells(Rows.Count, "H").End(xlUp)).Value ' 后期绑定流对象,无需手动添加引用,适配所有Excel版本 Set stream = CreateObject("ADODB.Stream") stream.Charset = "UTF-8" stream.Mode = 3 ' 读写模式 stream.Type = 2 ' 文本类型 For lngRow = 1 To UBound(dataArr) ' 拼接B列到H列的内容,列之间用换行分隔 fileContent = "" For col = 2 To 8 If fileContent <> "" Then fileContent = fileContent & vbNewLine fileContent = fileContent & dataArr(lngRow, col) Next col ' 写入文本并跳过UTF-8 BOM头(前3字节)实现无BOM输出 stream.Open stream.WriteText fileContent stream.Position = 3 utf8Bytes = stream.Read ' 二进制写入文件,无额外引号 Open StrFolder & "\" & dataArr(lngRow, 1) & ".md" For Binary As #1 Put #1, , utf8Bytes Close #1 stream.Close Next lngRow Set stream = Nothing MsgBox "导出完成,共生成 " & UBound(dataArr) & " 个MD文件" End Sub
使用注意事项
- 运行前请将需要导出的工作表设为当前活动表
- 提前检查A列的文件名,不要包含Windows系统禁止的特殊字符:
\/:*?"<>|,避免写入报错 - 如果需要调整列之间的分隔格式,只需修改拼接时的
vbNewLine为对应字符即可
内容的提问来源于stack exchange,提问作者lise
相关产品推荐
相关产品推荐

