[英]How to export multiple worksheets to CSV (without saving over the current worksheet)
我正在嘗試通過以下代碼將我的工作簿中的大量工作表導出到.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
而不適用於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文件,最后關閉臨時工作簿。 此外,我添加了Application.DisplayAlerts
指令,您的代碼將覆蓋.csv
文件,而不會詢問文件是否已存在。
您也可以先保存工作簿,然后保存工作表,最后關閉工作簿而不必另外保存(再次):
' ... 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.