You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改VBA代码将Excel工作表批量另存为.csv格式?

修改后的VBA代码(保存为CSV格式)
Sub SaveSheetsAsCSV()

Dim a As Integer
Dim ws As Worksheet
Dim wb As Workbook

a = ThisWorkbook.Worksheets.Count  '统计所有工作表数量

For i = 1 To a '遍历所有工作表
    If ThisWorkbook.Worksheets(i).Name <> "Test_Main" Then '排除主工作表

        Set wb = Workbooks.Add
        ThisWorkbook.Worksheets(i).Copy before:=wb.Worksheets(1) '将目标工作表复制到新工作簿
        '修改:添加.csv后缀 + 指定CSV格式
        wb.SaveAs "H:\IT\Melissa\Essengeld\TEST\" & ThisWorkbook.Worksheets(i).Name & ".csv", FileFormat:=xlCSV

        '修改:修正拼写错误savechages为SaveChanges
        wb.Close SaveChanges:=True

    End If
Next i

ThisWorkbook.Activate
ThisWorkbook.Sheets(1).Activate
ThisWorkbook.Sheets(1).Cells(1, 1).Select

MsgBox "Task Completed"
End Sub

关键修改说明

  • 文件名末尾追加.csv后缀,保证文件被系统识别为CSV类型
  • 在SaveAs方法中加入FileFormat:=xlCSV参数,明确指定保存格式为CSV(避免默认按原格式保存)
  • 修正了关闭工作簿时的参数拼写错误:savechages改为SaveChanges(VBA对参数名拼写敏感)

更简洁的可选版本

如果不想新建工作簿,可直接用工作表的SaveAs方法,代码更高效:

Sub SaveSheetsAsCSV_Direct()

Dim ws As Worksheet

For Each ws In ThisWorkbook.Worksheets
    If ws.Name <> "Test_Main" Then
        '直接保存当前工作表为CSV
        ws.SaveAs "H:\IT\Melissa\Essengeld\TEST\" & ws.Name & ".csv", FileFormat:=xlCSV
        '关闭自动生成的新工作簿
        ActiveWorkbook.Close SaveChanges:=False
    End If
Next ws

ThisWorkbook.Activate
ThisWorkbook.Sheets(1).Activate
ThisWorkbook.Sheets(1).Cells(1, 1).Select

MsgBox "Task Completed"
End Sub

内容的提问来源于stack exchange,提问作者Md101

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 14:54:24