我很欣赏有很多条目,如save individual excel sheets as csv和Export each sheet to a separate csv file - 但我想在工作簿中保存一个工作表。
我的xlsm文件中的代码有一个参数和数据表。我使用粘贴的值创建数据的工作表副本,然后将其保存为csv。目前我的整个工作簿更改名称并成为csv。
如何在Excel工作簿中“另存为csv”单张?
是否有Worksheet.SaveAs
或我是否必须将我的数据表移动到另一个工作簿并以这种方式保存?
代码示例
' [Sample so some DIMs and parameters passed in left out]
Dim s1 as Worksheet
Dim s2 as Worksheet
Set s1 = ThisWorkbook.Sheets(strSourceSheet)
' copy across
s1.Range(s1.Cells(1, 1), s1.Cells(lastrow, lastcol)).Copy
' Create new empty worksheet for holding values
Set s2 = Worksheets.Add
s2.Range("A1").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
' save sheet
s2.Activate
strFullname = strPath & strFilename
' >>> BIT THAT NEEDS FIXIN'
s2.SaveAs Filename:=strFullname, _
FileFormat:=xlCSV, CreateBackup:=True
' Can I do Worksheets.SaveAs?
使用Windows 10和Office 365
这段代码对我来说很好。
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表的副本,它打开一个新的工作簿,然后我们可以将其保存为.csv文件,然后关闭新保存的.csv文件,而不是弄乱原始文件上的文件名。
您只需将工作簿另存为CSV文件即可。 Excel将弹出一个对话框警告您将保存到单个工作表,但您可以使用Application.DisplayAlerts = False.
来抑制警告
不要忘了把它说回来。
这是相当通用的
Sub WriteCSVs()
Dim mySheet As Worksheet
Dim myPath As String
'Application.DisplayAlerts = False
For Each mySheet In ActiveWorkbook.Worksheets
myPath = "\\myserver\myfolder\"
ActiveWorkbook.Sheets(mySheet.Index).Copy
ActiveWorkbook.SaveAs Filename:=myPath & mySheet.Name, FileFormat:=xlCSV, CreateBackup:=True
ActiveWorkbook.Close
Next mySheet
'Application.DisplayAlerts = True
End Sub