VBA 将 .XLSX 文件转换为批量 .CSV 文件时出现问题

Issue with VBA converting .XLSX file to bulk .CSV

我每月收到一份 excel 文件,其中包含多个 sheet。每个 sheet 都需要拆分成 .CSV 文件才能上传到我们的系统进行阅读,并且考虑到单个工作簿可能包含 10 到 15 页以上,手工完成是一件苦差事。

目前,我正在使用这个 VBA 脚本来完成工作:

Sub Splitbook()
     'Updateby20140612
     Dim xPath As String
          xPath = Application.ActiveWorkbook.Path
          Application.ScreenUpdating = False
          Application.DisplayAlerts = False
     For Each xWs In ThisWorkbook.Sheets
     xWs.Copy
          Application.ActiveWorkbook.SaveAs Filename:=xPath & "\" & xWs.Name & ".csv"
          Application.ActiveWorkbook.Close False
     Next
          Application.DisplayAlerts = True
          Application.ScreenUpdating = True
End Sub

它“有效”。问题?当您尝试打开生成的 csv 时,windows 会抱怨扩展名不匹配并警告损坏。如果你点击对话框,它无论如何都会打开,但目标系统不能这样做。因此,我只能弄清楚缺少什么或返回手动解析。有帮助吗?

我创建了一个版本,将您的代码与其他答案的相关部分相结合。打开的工作簿将依次使用每个工作表的名称。因此,在 运行 此代码之前保存您的工作簿非常重要。最后打开的版本会有所有选项卡,但它们不在保存的同名 CSV 文件中。

如果你想在最后再次保存回原来的名称和格式,我认为其他一些答案也可以帮助解决这个问题。

我删除了工作表复制命令并注释掉了 Application.ActiveWorkbook.Close False 行,因为我不确定他们在做什么。

Sub Splitbook()

     Dim xPath As String
     xPath = Application.ActiveWorkbook.Path
     Application.ScreenUpdating = False
     Application.DisplayAlerts = False
     
     For Each xWs In ThisWorkbook.Sheets
         xWs.SaveAs Filename:=xPath & "\" & xWs.Name & ".csv", FileFormat:=xlCSV
          'Application.ActiveWorkbook.Close False
     Next
     
     Application.DisplayAlerts = True
     Application.ScreenUpdating = True

End Sub