将多个(特定)工作表导出到指定目录中的CSV文件

时间:2015-08-21 01:22:29

标签: excel vba excel-vba

我是VBA的新手。我尝试执行以下操作,但代码并未按预期工作 -

  1. 将工作簿中的特定工作表(包含"上传"的任何工作表名称)导出/复制到特定文件目录。
  2. 我不希望更改这些工作表名称,也不希望更改工作簿名称。
  3. 每个工作表的文件名都是一致的,因此每当我运行宏时,都可以替换目录中的文件。可以有一个对话框,询问我是否确定要替换每个文件。
  4. 我不希望新创建的CSV或任何其他文件打开。
  5. Sub SheetsToCSV() ' Jerry Beaucaire(2010年1月25日),更新时间(2015年8月15日)
    '将每个工作表保存到单个CSV文件中 Dim ws As Worksheet,fPATH As String

    Application.ScreenUpdating = False'加速宏
    Application.DisplayAlerts = False'自动覆盖旧文件
    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 = True
    结束子

1 个答案:

答案 0 :(得分: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