Vba:如何将工作表另存为 csv 文件(带有示例)


您可以在 VBA 中使用以下语法将工作簿的每个工作表保存到 CSV 文件:

 Sub SaveCSV()

Dim Ws As Worksheet
Dim SaveDir As String

Dim CurrentWorkbook As String
Dim CurrentFormat As Long

CurrentWorkbook = ThisWorkbook.FullName
CurrentFormat = ThisWorkbook.FileFormat

'specify directory to save CSV files in
SaveDir = " C:\Users\bobbi\OneDrive\Desktop\ "

'save each sheet to individual CSV file
For Each Ws In Application.ActiveWorkbook.Worksheets
    Ws.SaveAs SaveDir & Ws.Name, xlCSV
Next

Application.DisplayAlerts = False
ThisWorkbook.SaveAs Filename:=CurrentWorkbook, FileFormat:=CurrentFormat
Application.DisplayAlerts = True

End Sub

此特定宏会将当前活动工作簿的每个工作表保存到 CSV 文件中。

CSV 文件将保存在SaveDir变量中指定的路径中。

注意Application.DisplayAlerts=False行告诉 VBA 在保存文件时暂时禁用 Excel 中的所有显示警报。

以下示例展示了如何在实践中使用此语法。

示例:使用 VBA 将工作表另存为 CSV 文件

假设我们有一个包含两张表的 Excel 工作簿。

第一个表称为player_stats ,包含有关不同篮球运动员的统计数据:

第二个表称为team_info ,包含有关不同篮球队的信息:

假设我们要将这些工作表中的每一个保存为计算机桌面上的单独 CSV 文件。

我们可以创建以下宏来执行此操作:

 Sub SaveCSV()

Dim Ws As Worksheet
Dim SaveDir As String

Dim CurrentWorkbook As String
Dim CurrentFormat As Long

CurrentWorkbook = ThisWorkbook.FullName
CurrentFormat = ThisWorkbook.FileFormat

'specify directory to save CSV files in
SaveDir = " C:\Users\bobbi\OneDrive\Desktop\ "

'save each sheet to individual CSV file
For Each Ws In Application.ActiveWorkbook.Worksheets
    Ws.SaveAs SaveDir & Ws.Name, xlCSV
Next

Application.DisplayAlerts = False
ThisWorkbook.SaveAs Filename:=CurrentWorkbook, FileFormat:=CurrentFormat
Application.DisplayAlerts = True

End Sub

执行此宏后,每个工作表都将作为 CSV 文件保存在我们的桌面上。

如果我导航到计算机桌面,我可以看到每个单独的 CSV 文件,其文件名与工作表名称匹配:

如果我使用记事本打开player_stats CSV文件,我可以看到Excel文件中的值被保存为逗号分隔值:

请注意,在此示例中,我们能够将两张工作表作为单独的 CSV 文件保存到我们的工作簿中,但同一宏将适用于任意数量的工作表。

其他资源

以下教程说明如何在 VBA 中执行其他常见任务:

VBA:如何计算工作簿中的工作表数量
VBA:如何从另一个工作簿中提取数据
VBA:如何添加新工作表

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注