Vba 将特定的单页另存为.csv

Vba 将特定的单页另存为.csv,vba,excel,Vba,Excel,我有一个和这篇文章非常相似的问题: 我的问题不同之处在于我只需要保存一张纸 这是那篇文章的答案 Dim ws As Worksheet For Each ws In ActiveWorkbook.Worksheets ws.SaveAs "C:\docs\" & ws.Name & ".csv", xlCSV Next 此代码将每个工作表保存到特定文件夹,并将文件命名为与工作表相同的名称。我看到两个问题: 1-您当前使用的工作簿将成为代码保存的最后一个工作表。如果要

我有一个和这篇文章非常相似的问题:

我的问题不同之处在于我只需要保存一张纸 这是那篇文章的答案

Dim ws As Worksheet

For Each ws In ActiveWorkbook.Worksheets
    ws.SaveAs "C:\docs\" & ws.Name & ".csv", xlCSV
Next
此代码将每个工作表保存到特定文件夹,并将文件命名为与工作表相同的名称。我看到两个问题:

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
希望我能被推向正确的方向。谢谢

  • strSourceSheet
    是包含要导出的工作表的名称/编号的工作表
  • strFullname
    是带有csv路径的文件名。就这么简单
  • 现在看看这个代码

    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
    
    你注意到我们是如何在
    这个工作簿
    活动工作簿
    之间切换的吗。当您复制工作表时,将创建一个新工作簿并将其激活,从而关闭我们使用的
    ActiveWorkbook


    希望这有帮助。

    在您的示例中,strSourceSheet(字符串变量)应该设置为“Sheet2”,而不是工作表对象。@YowE3K:是的,您是对的。我没有测试就直接输入了它(这是我很少做的事情)。我已经修改了post.Re
    (这是我很少做的)
    -你比我更优秀-我通常不做测试就回答,只注意到当OP抱怨错误时它不起作用。(我正在努力变得更好,但进展缓慢。)