EP03. “Write Data to Text File 写入文本文件”
🔒 登录后可标记已读- 延续 EP02 读取文件,讲反过来怎么用 VBA 把选中的范围导出成一个 CSV(逗号分隔)文本文件
- 用双层循环逐行逐列走过选中范围,按逗号分隔写入文件
- 前置知识:EP02 的文件读写基本概念(Open/Close)
- 学完能自己写「把 Excel 数据导出成文本文件」的宏
重点内容
适用版本
桌面版通用(Excel 365 / 2021 / 2019 等)。
完整代码
Dim myFile As String, rng As Range, cellValue As Variant, i As Integer, j As Integer
myFile = Application.DefaultFilePath & "\sales.csv"
Set rng = Selection
Open myFile For Output As #1
For i = 1 To rng.Rows.Count
For j = 1 To rng.Columns.Count
cellValue = rng.Cells(i, j).Value
If j = rng.Columns.Count Then
Write #1, cellValue
Else
Write #1, cellValue,
End If
Next j
Next i
Close #1
逻辑说明
Application.DefaultFilePath:取得 Excel 默认的文件存储路径(在 File → Options → Save 里可以调整),拼上文件名 "sales.csv"Set rng = Selection:把使用者目前选中的范围存进rngOpen myFile For Output As #1:以「写入模式」打开文件——📌 如果这个文件已经存在,会被整个覆盖掉,不是追加内容- 双层循环逐行逐列走过选中范围:如果这一格不是该行最后一列,用逗号分隔(
Write #1, cellValue,);是最后一列就换行(Write #1, cellValue) Close #1:写完一定要关闭文件,内容才会真正存进去
学完你会
- ✅ 用
Open ... For Output建立一个新文件写入内容 - ✅ 用
Write #1按逗号分隔把数据写进 CSV 格式 - ✅ 知道
For Output打开已存在的文件会直接覆盖,不是追加
常见错误
- 文件已经存在还用
For Output打开,没意识到会直接覆盖掉旧文件的内容 - 写完数据忘记
Close #1,文件可能没有真正写入完整内容 - 双层循环里最后一列该不该加逗号的判断写反,导致每行末尾多一个逗号或少了换行
Sources
Blog / Website: