【Excel VBA编程】从表格到文件,数据“破茧”:结构化表格数据导出到csv
- 2026-11-09 21:10:48
总是听到或看到有人问,编程好学吗?如何入门?多久能学会?它能做些什么?怎么写代码呀?执行过程中出问题了谁能帮帮我...如果你也有类似的问题那就赶快关注我的公众号,一起学起来吧!
前两期,我们利用 ListObjects对象顺利创建了结构化表格“MyTables”,并将 CSV 数据成功导入到表格中。本期,我们将继续探索 ListObjects对象的最后一个实用功能:利用表格内公式自动计算后,将结果数据再次导回 CSV 文档
1 效果展示
实现功能:结构化表格数据导出到CSV文件。程序会自动读取结构化表格全部内容,最终导出到指定的CSV文件保存。效果展示如下:
2 代码及说明
2.1 操作步骤
打开你的.xlsm文档
按下 Alt + F11 快捷键,打开VBA编辑器
选择 “插入” -> “模块”,将文中代码复制粘贴到新模块中 修改CSV文件路径及结构化表格所在的工作表及名称信息。对应图中红色框框内容

光标移动到“ExportListObjectWithFormatToCSV”内,按“F5”键运行
备注:在代码中直接设置和修改参数值,是经过多方面利弊权衡的。虽然这种方式需要手动修改代码,但它能确保代码量最小、逻辑最清晰,同时也极大地方便了后续的查看与使用
2.2 代码实现
参考代码如下:
Sub ExportListObjectWithFormatToCSV()Dim ws As WorksheetDim tbl As ListObjectDim exportRange As RangeDim filePath As StringDim fileNum As IntegerDim dataArray As VariantDim textArray As VariantDim i As Long, j As LongDim outputLine As StringOn Error GoTo ErrorHandlerfilePath = "D:\常用文件\csv\MyTables_Formatted_Data.csv" ' 修改为实际路径Set ws = ThisWorkbook.Worksheets("销售报表") ' 根据实际情况修改工作表名及表格名Set tbl = ws.ListObjects("MyTables")Set exportRange = tbl.RangedataArray = exportRange.ValueReDim textArray(1 To UBound(dataArray, 1), 1 To UBound(dataArray, 2))For i = 1 To UBound(dataArray, 1)For j = 1 To UBound(dataArray, 2)textArray(i, j) = exportRange.Cells(i, j).TextNext jNext ifileNum = FreeFileOpen filePath For Output As #fileNumFor i = 1 To UBound(textArray, 1)outputLine = ""For j = 1 To UBound(textArray, 2)If j = UBound(textArray, 2) ThenoutputLine = outputLine & textArray(i, j)ElseoutputLine = outputLine & textArray(i, j) & ","End IfNext jPrint #fileNum, outputLineNext iClose #fileNumMsgBox "表格 'MyTables' 数据已成功导出至:" & vbCrLf & filePath, vbInformation, "导出成功"Exit SubErrorHandler:MsgBox "导出过程中发生错误:" & vbCrLf & Err.Description, vbCritical, "错误"End Sub
其中:
第20行代码:tbl.Range 是指整个表格的范围,如果不想导出标题,还可以使用.DataBodyRange仅导出数据区
第26行代码:由于E列中设置了显示格式,如“¥7.42”,若想将格式一起导出,就需要使用Range对象.Cells(i, j).Text获取格式化后的显示文本。如果只需要显示数值,则可以省略这一步骤
3 结尾
好了,今天的编程知识到此结束了,又到每日分享冷知识的时间了
今天分享的是给文件/文件夹命名的特殊限制:由于Windows继承自DOS,而DOS将一些名称保留给了特殊设备(如控制台、打印机等),因此至今我们都无法在Windows中创建名为“CON”、“AUX”、“NUL”、“PRN”或“COM1”至“COM9”、“LPT1”至“LPT9”的文件或文件夹。这个限制从DOS时代一直延续至今,是系统兼容性留下的一个独特印记
本公众号一直在不间断地分享免费的编程案例和实用技巧。无论您是用来提升自动化办公效率还是想提升自我,请关注我的公众号,解锁更多的编程知识