簡體   English   中英

如何將多個工作表導出為CSV(不保存當前工作表)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM