将特定单页保存为.csv

时间:2016-08-13 03:48:10

标签: excel vba excel-vba

我的帖子非常相似: Save individual Excel sheets as CSV

我的问题不同之处在于我只需要保存一张纸 这是该帖子的答案

Dim ws As Worksheet

For Each ws In ActiveWorkbook.Worksheets
    ws.SaveAs "C:\docs\" & ws.Name & ".csv", xlCSV
Next

此代码将每个工作表保存到特定文件夹,并将该文件命名为与工作表相同。我看到2个问题:

1-您当前正在处理的工作簿成为代码保存的最后一个工作表。如果要继续处理工作簿,则必须打开原始文件。如果打开一个新工作簿并将其与正在处理的工作簿分开保存,它会更好。

2-它保存每个工作表。我只需要保存一个特定的工作表,即 Sheet2

我发现了这个其他代码,但我对VBA非常新,只知道如何创建一个宏,复制和放大将代码粘贴到其中。运行代码时出错。

Sub test()

Application.DisplayAlerts = False

ThisWorkbook.Sheets(strSourceSheet).Copy
ActiveWorkbook.SaveAs Filename:=strFullname, FileFormat:=xlCSV, CreateBackup:=True
ActiveWorkbook.Close

Application.DisplayAlerts = True

End Sub

希望我可以朝着正确的方向前进。谢谢!

1 个答案:

答案 0 :(得分:4)

  1. strSourceSheet是包含您要导出的工作表的名称/编号的工作表
  2. strFullname是带有csv路径的文件名。就这么简单。
  3. 现在看到这段代码

    ThisWorkbook.Sheets(strSourceSheet).Copy
    ActiveWorkbook.SaveAs Filename:=strFullname, _
                          FileFormat:=xlCSV, _
                          CreateBackup:=True
    ActiveWorkbook.Close
    

    假设我要复制Sheet2然后我会将其写为

    Dim strSourceSheet As String
    Dim strFullname As String
    
    '~~> Change the below two lines as per your requirements
    strSourceSheet = "Sheet2"
    strFullname = "C:\Temp\MyCsv.Csv"
    
    ThisWorkbook.Sheets(strSourceSheet).Copy
    ActiveWorkbook.SaveAs Filename:=strFullname, _
                          FileFormat:=xlCSV, _
                          CreateBackup:=True
    ActiveWorkbook.Close
    

    您是否注意到我们如何在ThisWorkbookActiveWorkbook之间切换。复制工作表时,会创建一个新工作簿并变为活动状态,因此关闭该工作簿时我们使用ActiveWorkbook

    希望这有帮助。