如何多个工作表导出为CSV(不保存当前工作表上)
问题描述:
我想导出我的工作簿中大量的工作表通过一些像这样的代码为.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文件,最后关闭临时工作簿。此外,我添加了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
我在准备这个相同的答案是最方便的,所以+ 1 – 2013-04-26 09:17:27
太棒了。想好让它成为临时工作簿,而不是试图阻止'SaveAs'做它想做的事! – 2013-04-28 23:54:49