跳到内容
当前位置:首页>Excel>【Excel VBA编程】从表格到文件,数据“破茧”:结构化表格数据导出到csv

【Excel VBA编程】从表格到文件,数据“破茧”:结构化表格数据导出到csv

  • 2026-11-09 21:10:48
【Excel VBA编程】从表格到文件,数据“破茧”:结构化表格数据导出到csv
“保持原有数据格式导出”

总是听到或看到有人问,编程好学吗?如何入门?多久能学会?它能做些什么?怎么写代码呀?执行过程中出问题了谁能帮帮我...如果你也有类似的问题那就赶快关注我的公众号,一起学起来吧!

前两期,我们利用 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 Worksheet    Dim tbl As ListObject    Dim exportRange As Range    Dim filePath As String    Dim fileNum As Integer    Dim dataArray As Variant    Dim textArray As Variant    Dim i As Long, j As Long    Dim outputLine As String    On Error GoTo ErrorHandler    filePath = "D:\常用文件\csv\MyTables_Formatted_Data.csv" ' 修改为实际路径    Set ws = ThisWorkbook.Worksheets("销售报表") ' 根据实际情况修改工作表名及表格名    Set tbl = ws.ListObjects("MyTables")    Set exportRange = tbl.Range    dataArray = exportRange.Value    ReDim 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).Text        Next j    Next i    fileNum = FreeFile    Open filePath For Output As #fileNum    For i = 1 To UBound(textArray, 1)        outputLine = ""        For j = 1 To UBound(textArray, 2)            If j = UBound(textArray, 2) Then                outputLine = outputLine & textArray(i, j)            Else                outputLine = outputLine & textArray(i, j) & ","            End If        Next j        Print #fileNum, outputLine    Next i    Close #fileNum    MsgBox "表格 '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时代一直延续至今,是系统兼容性留下的一个独特印记

    本公众号一直在不间断地分享免费的编程案例和实用技巧。无论您是用来提升自动化办公效率还是想提升自我,请关注我的公众号,解锁更多的编程知识

    基本 文件 流程 错误 SQL 调试
    1. 请求信息 : 2026-11-14 19:59:15 HTTP/1.1 GET : http://h.sjds.net/a/471520.html
    2. 运行时间 : 0.074497s [ 吞吐率:13.42req/s ] 内存消耗:4,312.49kb 文件加载:140
    3. 缓存信息 : 0 reads,0 writes
    4. 会话信息 : SESSION_ID=03c6b2f09fb5ba68d09b9b6a342d55cc
    1. /www/wwwroot/h.sjds.net/public/index.php ( 0.79 KB )
    2. /www/wwwroot/h.sjds.net/vendor/autoload.php ( 0.17 KB )
    3. /www/wwwroot/h.sjds.net/vendor/composer/autoload_real.php ( 2.49 KB )
    4. /www/wwwroot/h.sjds.net/vendor/composer/platform_check.php ( 0.90 KB )
    5. /www/wwwroot/h.sjds.net/vendor/composer/ClassLoader.php ( 14.03 KB )
    6. /www/wwwroot/h.sjds.net/vendor/composer/autoload_static.php ( 4.90 KB )
    7. /www/wwwroot/h.sjds.net/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
    8. /www/wwwroot/h.sjds.net/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
    9. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
    10. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
    11. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
    12. /www/wwwroot/h.sjds.net/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
    13. /www/wwwroot/h.sjds.net/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
    14. /www/wwwroot/h.sjds.net/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
    15. /www/wwwroot/h.sjds.net/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
    16. /www/wwwroot/h.sjds.net/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
    17. /www/wwwroot/h.sjds.net/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
    18. /www/wwwroot/h.sjds.net/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
    19. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
    20. /www/wwwroot/h.sjds.net/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
    21. /www/wwwroot/h.sjds.net/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
    22. /www/wwwroot/h.sjds.net/app/provider.php ( 0.19 KB )
    23. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
    24. /www/wwwroot/h.sjds.net/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
    25. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
    26. /www/wwwroot/h.sjds.net/app/common.php ( 0.03 KB )
    27. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/helper.php ( 18.78 KB )
    28. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
    29. /www/wwwroot/h.sjds.net/config/app.php ( 0.95 KB )
    30. /www/wwwroot/h.sjds.net/config/cache.php ( 0.78 KB )
    31. /www/wwwroot/h.sjds.net/config/console.php ( 0.23 KB )
    32. /www/wwwroot/h.sjds.net/config/cookie.php ( 0.56 KB )
    33. /www/wwwroot/h.sjds.net/config/database.php ( 2.48 KB )
    34. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
    35. /www/wwwroot/h.sjds.net/config/filesystem.php ( 0.61 KB )
    36. /www/wwwroot/h.sjds.net/config/lang.php ( 0.91 KB )
    37. /www/wwwroot/h.sjds.net/config/log.php ( 1.35 KB )
    38. /www/wwwroot/h.sjds.net/config/middleware.php ( 0.19 KB )
    39. /www/wwwroot/h.sjds.net/config/route.php ( 1.89 KB )
    40. /www/wwwroot/h.sjds.net/config/session.php ( 0.57 KB )
    41. /www/wwwroot/h.sjds.net/config/trace.php ( 0.34 KB )
    42. /www/wwwroot/h.sjds.net/config/view.php ( 0.82 KB )
    43. /www/wwwroot/h.sjds.net/app/event.php ( 0.25 KB )
    44. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
    45. /www/wwwroot/h.sjds.net/app/service.php ( 0.13 KB )
    46. /www/wwwroot/h.sjds.net/app/AppService.php ( 0.26 KB )
    47. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
    48. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
    49. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
    50. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
    51. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
    52. /www/wwwroot/h.sjds.net/vendor/services.php ( 0.14 KB )
    53. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
    54. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
    55. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
    56. /www/wwwroot/h.sjds.net/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
    57. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
    58. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
    59. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
    60. /www/wwwroot/h.sjds.net/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
    61. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
    62. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
    63. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
    64. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
    65. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
    66. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
    67. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
    68. /www/wwwroot/h.sjds.net/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
    69. /www/wwwroot/h.sjds.net/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
    70. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
    71. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
    72. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
    73. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
    74. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
    75. /www/wwwroot/h.sjds.net/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
    76. /www/wwwroot/h.sjds.net/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
    77. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
    78. /www/wwwroot/h.sjds.net/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
    79. /www/wwwroot/h.sjds.net/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
    80. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
    81. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
    82. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
    83. /www/wwwroot/h.sjds.net/app/Request.php ( 0.09 KB )
    84. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
    85. /www/wwwroot/h.sjds.net/app/middleware.php ( 0.25 KB )
    86. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
    87. /www/wwwroot/h.sjds.net/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
    88. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
    89. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
    90. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
    91. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
    92. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
    93. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
    94. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
    95. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
    96. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
    97. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
    98. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
    99. /www/wwwroot/h.sjds.net/route/app.php ( 1.72 KB )
    100. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
    101. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
    102. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
    103. /www/wwwroot/h.sjds.net/app/controller/Index.php ( 4.81 KB )
    104. /www/wwwroot/h.sjds.net/app/BaseController.php ( 2.05 KB )
    105. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
    106. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
    107. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
    108. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
    109. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
    110. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
    111. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
    112. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
    113. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
    114. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
    115. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
    116. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
    117. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
    118. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
    119. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
    120. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
    121. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
    122. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
    123. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
    124. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
    125. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
    126. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
    127. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
    128. /www/wwwroot/h.sjds.net/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
    129. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
    130. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
    131. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
    132. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
    133. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
    134. /www/wwwroot/h.sjds.net/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
    135. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
    136. /www/wwwroot/h.sjds.net/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
    137. /www/wwwroot/h.sjds.net/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
    138. /www/wwwroot/h.sjds.net/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
    139. /www/wwwroot/h.sjds.net/runtime/temp/c1d6e8c94b2c2fa10e259903674c804d.php ( 8.11 KB )
    140. /www/wwwroot/h.sjds.net/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
    1. CONNECT:[ UseTime:0.000575s ] mysql:host=172.18.0.4;port=3306;dbname=h_sjds;charset=utf8mb4
    2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000756s ]
    3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000374s ]
    4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000373s ]
    5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000597s ]
    6. SELECT * FROM `set` [ RunTime:0.000315s ]
    7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000626s ]
    8. SELECT * FROM `article` WHERE `id` = 471520 LIMIT 1 [ RunTime:0.000375s ]
    9. UPDATE `article` SET `lasttime` = 1794657555 WHERE `id` = 471520 [ RunTime:0.001277s ]
    10. SELECT * FROM `fenlei` WHERE `id` = 65 LIMIT 1 [ RunTime:0.000336s ]
    11. SELECT * FROM `article` WHERE `id` < 471520 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000440s ]
    12. SELECT * FROM `article` WHERE `id` > 471520 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000410s ]
    13. SELECT * FROM `article` WHERE `id` < 471520 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000648s ]
    14. SELECT * FROM `article` WHERE `id` < 471520 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000629s ]
    15. SELECT * FROM `article` WHERE `id` < 471520 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.000729s ]
    0.085377s