总是听到或看到有人问,编程好学吗?如何入门?多久能学会?它能做些什么?怎么写代码呀?执行过程中出问题了谁能帮帮我...如果你也有类似的问题那就赶快关注我的公众号,一起学起来吧!
前两期,我们利用 ListObjects对象顺利创建了结构化表格“MyTables”,并将 CSV 数据成功导入到表格中。本期,我们将继续探索 ListObjects对象的最后一个实用功能:利用表格内公式自动计算后,将结果数据再次导回 CSV 文档
实现功能:结构化表格数据导出到CSV文件。程序会自动读取结构化表格全部内容,最终导出到指定的CSV文件保存。效果展示如下:
2.1 操作步骤
- 光标移动到“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获取格式化后的显示文本。如果只需要显示数值,则可以省略这一步骤
好了,今天的编程知识到此结束了,又到每日分享冷知识的时间了
今天分享的是给文件/文件夹命名的特殊限制:由于Windows继承自DOS,而DOS将一些名称保留给了特殊设备(如控制台、打印机等),因此至今我们都无法在Windows中创建名为“CON”、“AUX”、“NUL”、“PRN”或“COM1”至“COM9”、“LPT1”至“LPT9”的文件或文件夹。这个限制从DOS时代一直延续至今,是系统兼容性留下的一个独特印记
本公众号一直在不间断地分享免费的编程案例和实用技巧。无论您是用来提升自动化办公效率还是想提升自我,请关注我的公众号,解锁更多的编程知识