我正在尝试通过如下代码将工作簿中的多个工作表导出到 .csv:
Sub Export_To_CSV(exportPath As String)
Dim filePath As String
For Each WS In ThisWorkbook.Worksheets
filePath = exportPath & "(" & WS.Name & ").dat"
WS.SaveAs Filename:=filePath, FileFormat:=xlCSV
Next
End Sub
问题是这会保存我打开的当前 .xlsm 文件。
如何在不更改当前文件名的情况下导出 .csv?
我认为 SaveCopyAs
可以解决问题,但它仅适用于 工作簿
,而不适用于工作表
。
最佳答案
这是我的想法,可以帮助你......
添加这部分代码,而不是当前的 for...next
部分:
'...your code here
Dim tmpWS As Worksheet
Application.DisplayAlerts = False
For Each WS In ThisWorkbook.Worksheets
filePath = exportPath & "(" & WS.Name & ").dat"
WS.Copy
Set tmpWS = ActiveSheet
tmpWS.SaveAs Filename:=filePath, FileFormat:=xlCSV
tmpWS.Parent.Close False
Next
Application.DisplayAlerts = True
'...your code here
代码的逻辑?首先,它将工作表的副本复制到临时工作簿中,接下来将新工作表另存为 CSV 文件,最后关闭临时工作簿。此外,我添加了 Application.DisplayAlerts
指令,您的代码将覆盖 .csv
文件,而不询问文件是否已存在。
关于excel - 如何将多个工作表导出为 CSV(不保存当前工作表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16232245/