VBA将单页保存为CSV(不是整个工作簿)

时间:2015-12-08 12:19:12

标签: excel vba excel-vba

我很欣赏有很多条目,例如save individual excel sheets as csvExport each sheet to a separate csv file - 但我想在工作簿中保存单个工作表

我的xlsm文件中的代码有一个参数和数据表。我使用粘贴的值创建数据的工作表副本,然后将其保存为csv。目前我的整个工作簿更改名称并成为csv。

我如何"另存为csv" Excel工作簿中的单个工作表?

是否有' [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? 或者我是否必须将数据表移动到另一个工作簿并以此方式保存?

代码示例

{{1}}

使用Windows 10和Office 365

3 个答案:

答案 0 :(得分:17)

此代码适用于我。

for

它正在复制整个strSourceSheet表,它打开一个新的工作簿,然后我们可以将其保存为.csv文件,然后关闭新保存的.csv文件,而不是弄乱原始文件中的文件名。

答案 1 :(得分:2)

您只需将工作簿另存为CSV文件即可。 Excel将弹出一个对话框警告您将保存到单个工作表,但您可以使用Application.DisplayAlerts = False.

取消警告

不要忘记把它恢复原状。

答案 2 :(得分:1)

这是相当通用的

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