5

次のようなコードを使用して、ワークブック内の多数のワークシートを .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はそのトリックを行うと思っていましたが、それは a にのみ適用され、 a には適用されworkbookませんworksheet

4

2 に答える 2

8

これがあなたを助けることができる私の考えです...現在の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

于 2013-04-26T09:10:07.820 に答える