我的帖子非常相似: 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
希望我可以朝着正确的方向前进。谢谢!
答案 0 :(得分:4)
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
您是否注意到我们如何在ThisWorkbook
和ActiveWorkbook
之间切换。复制工作表时,会创建一个新工作簿并变为活动状态,因此关闭该工作簿时我们使用ActiveWorkbook
希望这有帮助。