Excel 如何将多个工作表导出为CSV(不在当前工作表上保存)
我正在尝试通过以下代码将工作簿中的许多工作表导出到.csv:Excel 如何将多个工作表导出为CSV(不在当前工作表上保存),excel,vba,csv,Excel,Vba,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 Filenam
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
会奏效,但它只适用于工作簿
而不适用于工作表。。。
添加这部分代码,而不是当前的下一节:
'...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
文件,而不询问文件是否已存在。您还可以先保存工作簿,然后保存工作表,最后关闭工作簿,而无需保存(再次):
我准备了与最方便的答案相同的答案,所以+1这太棒了。给它一个临时工作簿,而不是试图阻止它做它想做的事情,这是个好主意!
' ... 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