如何在 excel 2013 中将包含多个工作表的 excel 工作簿保存为多个相应的 csv 文件?

如何在 excel 2013 中将包含多个工作表的 excel 工作簿保存为多个相应的 csv 文件?

我有一个 Excel 工作簿,里面有大约 125 个工作表,我需要将这 125 个工作表分别保存到 csv 文件中(这样我最终总共得到 125 个 csv 文件)

我目前可以手动执行此操作(文件>另存为> csv 文件类型),但只能以这样的方式:第一个工作表-->第一个 csv 第二个工作表-->第二个 csv 。。等等

有没有办法可以一次保存整个工作簿,而不是仅保存当前活动的工作表,然后转到下一个工作表......?

答案1

使用 VBA 宏将每个 Excel 工作表保存为单独的工作簿作者:Sorceri:

将工作表保留在现有工作簿中,并使用副本创建新工作簿

Dim path As String
Dim dt As String
dt = Now()
path = CreateObject("WScript.Shell").specialfolders("Desktop") & "\Calendars " & Replace(Replace(dt, ":", "."), "/", ".")
MkDir path
Call Shell("explorer.exe" & " " & path, vbNormalFocus)

Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets 'SetVersions
    If ws.Name <> "How-To" And ws.Name <> "Actg_Prd" Then
        Dim wb As Workbook
        Set wb = ws.Application.Workbooks.Add
        ws.Copy Before:=wb.Sheets(1)
        wb.SaveAs path & ws.Name, Excel.XlFileFormat.xlOpenXMLWorkbook
        Set wb = Nothing
    End If
Next ws

另一个解决方案可以在从工作簿中的每个工作表创建工作簿

此宏将复制新工作簿中每个可见的工作表,并将该工作簿以工作表的名称保存在与具有此宏的工作簿相同路径的新创建的文件夹中。

答案2

我尝试使用脚本这一页但复制命令失败了,我不知道为什么。所以我制作了一个简化版本的脚本,它对我来说很好地完成了这项工作。它为工作簿中的每个工作表创建一个 CSV 文件,名称与工作簿相同,但附加了工作表名称。

要运行该脚本,请按 Alt + F11 调出 Visual Basic 工具,然后选择“插入 - 模块”。复制并粘贴下面的脚本,然后按 F5 运行它。这应该会得到您在原始问题中寻找的结果。

Sub ExportSheetsToCSV()
    Dim xWs As Worksheet
    Dim xcsvFile As String
    Dim originalFileName As String
    originalFileName = ActiveWorkbook.Name
    For Each xWs In Application.ActiveWorkbook.Worksheets
        xWs.Activate
        xcsvFile = ActiveWorkbook.Path & "\" & originalFileName & "_" & xWs.Name & ".csv"
        Application.ActiveWorkbook.SaveAs Filename:=xcsvFile, _
        FileFormat:=xlCSV, CreateBackup:=False
    Next
End Sub

相关内容