2013-04-26 18 views
5

Tôi đang cố gắng để xuất khẩu một số bảng trong bảng tính của tôi để .csv qua một số mã như thế này:Làm thế nào để xuất khẩu nhiều bảng để CSV (mà không lưu trên bảng tính hiện hành)

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 

Vấn đề là điều này sẽ tiết kiệm hơn tệp .xlsm hiện tại mà tôi đã mở.

Tôi làm cách nào để xuất tệp .csv mà không thay đổi tên của tệp hiện tại?

Tôi nghĩ SaveCopyAs sẽ thực hiện thủ thuật, nhưng nó chỉ áp dụng cho một số workbook và không phải là worksheet.

Trả lời

8

Ở đây có ý tưởng của tôi có thể giúp bạn ... Thêm phần này của mã thay vì bạn hiện for...next phần:

'...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 

logic của mã? Đầu tiên, nó tạo một bản sao của trang tính của bạn vào sổ làm việc tạm thời, tiếp theo nó lưu trang tính mới dưới dạng tệp CSV và cuối cùng, nó đóng sổ làm việc tạm thời. Hơn nữa, tôi đã thêm Application.DisplayAlerts hướng dẫn mã của bạn ghi đè tệp .csv mà không hỏi liệu tệp đã tồn tại chưa.

+0

tôi đang chuẩn bị câu trả lời này giống như một thuận tiện nhất, vì vậy + 1 –

+0

Thật tuyệt vời. Suy nghĩ tốt để cho nó một bảng tính tạm thời thay vì cố gắng ngăn chặn 'SaveAs' làm những gì nó muốn làm! –

0

Bạn cũng có thể đầu tiên lưu bảng tính, sau đó lưu ra khỏi bảng và cuối cùng đóng workbook mà không cần phải tiết kiệm (một lần nữa):

' ... 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 
Các vấn đề liên quan