如何将多个工作表导出为CSV(不保存在当前工作表上)

我试图通过这样的代码将我的工作簿中的许多工作表导出为.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会做的伎俩,但它只适用于workbook而不是worksheet

这里是我的想法,可以帮助你…添加这部分的代码,而不是你目前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文件,最后closures临时工作簿。 此外,我添加了Application.DisplayAlerts指令,您的代码覆盖.csv文件而不询问文件是否已经存在。

您也可以先保存工作簿,然后保存工作表,最后closures工作簿而不必保存(再次):

 ' ... your code here ActiveWorkbook.Save Application.DisplayAlerts = False Dim WS As Worksheet For Each WS In Worksheets Filepath = "c:\temp\" & WS.Name & ".dat" WS.SaveAs Filename:=Filepath, FileFormat:=xlCSV, _ CreateBackup:=False Next ActiveWorkbook.Close ' ... your code here