2015-08-21 69 views
1

我是VBA的新手。我試圖執行以下操作,但代碼不像預期的那樣工作 -將多個(特定)工作表導出到指定目錄中的CSV文件

  1. 導出/將工作簿中的特定工作表(包含「上載」的任何工作表名稱)複製到特定文件目錄。
  2. 我不希望這些工作表名稱更改,也不需要更改工作簿名稱。
  3. 文件名對於每個工作表都是一致的,因此,只要我運行宏,就可以替換目錄中的文件。可以有一個對話框,詢問我是否確定要替換每個文件。
  4. 我不希望新創建的CSV或任何其他文件打開。

子SheetsToCSV() '傑裏揆(1/25/2010),更新(2015年8月15日)
' 各自片保存到一個單獨的CSV文件
昏暗WS作爲工作表,fPATH作爲字符串

Application.ScreenUpdating =假 '加快宏觀
Application.DisplayAlerts =假' 自動覆蓋舊的文件
fPATH = 「C:\ 2015年\ CSV \」「路徑保存到,還記得最後\在此字符串

For Each ws In Worksheets 
    ws.Copy 
    ActiveWorkbook.SaveAs Filename:=fPATH & ActiveSheet.Name & ".csv", FileFormat:=xlCSV, CreateBackup:=False 
    ActiveWorkbook.Close 
Next ws 

Application.ScreenUpdating =真
結束小組

回答

1

你只需要通過所有工作表添加一個簡單的循環和測試的名稱。

試試這個: -

Sub COPYSelectedSheetsToCSV() 

    Dim ws As Worksheet 

    'In case something goes wrong  
    On Error GoTo COPYSelectedSheetsToCSVZ 

    'Loop through all worksheets 
    For Each ws In ActiveWorkbook.Sheets 

    'Does the name contain "Upload" 
    If InStr(1, ws.Name, "Upload") > 0 Then 

     'Make the worksheet active 
     ws.Select 

     'Save it to CSV 
     ActiveWorkbook.SaveAs Filename:="/Users/reginaho/Desktop/Upload/" & ws.Name & ".csv", _ 
      FileFormat:=xlCSV, CreateBackup:=False 

    End If 

    Next 

COPYSelectedSheetsToCSVX: 

    'Clean up the memory usage 
    Set ws = Nothing 

    Exit Sub 

COPYSelectedSheetsToCSVZ: 
    MsgBox Err.Number & " - " & Err.Description 
    Resume COPYSelectedSheetsToCSVX 

End Sub 
相關問題