如何修改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
相关产品推荐
相关产品推荐

