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抱怨错误时它不起作用。(我正在努力变得更好,但进展缓慢。)