将特定的单个工作表另存为 .csv

jon*_*jon 2 excel vba

我有一个与这篇文章非常相似的问题: Save individual Excel sheet as CSV

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

Dim ws As Worksheet

For Each ws In ActiveWorkbook.Worksheets
    ws.SaveAs "C:\docs\" & ws.Name & ".csv", xlCSV
Next
Run Code Online (Sandbox Code Playgroud)

此代码将每个工作表保存到特定文件夹并将文件命名为与工作表相同的名称。我看到的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
Run Code Online (Sandbox Code Playgroud)

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

Sid*_*out 5

  1. strSourceSheet 是具有要导出的工作表的名称/编号的工作表
  2. strFullname是带有 csv 路径的文件名。就如此容易。

现在看这个代码

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

假设我想复制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
Run Code Online (Sandbox Code Playgroud)

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

希望这可以帮助。