MICROSOFT

EP03. “Write Data to Text File 写入文本文件”

首页 Microsoft 工具 Excel · VBA · Application Object · EP03
约 4 分钟· #EP03#Excel#Application Object
🔒 登录后可标记已读
  • 延续 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:把使用者目前选中的范围存进 rng
  • Open 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:

  1. Write Data to Text File