VBA 自动转化sheet到csv文件
代码思路
- 打开指定的工作簿。
- 访问指定的工作表。
- 复制该工作表到一个新的工作簿。
- 将新工作簿保存为CSV格式。
- 关闭所有打开的工作簿,不保存任何改动。
Sub SaveSheetAsCSV(workbookPath As String, sheetName As String, savePath As String)Dim srcWorkbook, newWorkbook As WorkbookDim srcWorksheet As Worksheet' 打开源工作簿Set srcWorkbook = Workbooks.Open(workbookPath, ReadOnly:=True)' 获取指定的工作表Set srcWorksheet = srcWorkbook.Sheets(sheetName)' 复制该工作表到新工作簿srcWorksheet.CopySet newWorkbook = ActiveWorkbook' 保存新工作簿为CSVApplication.DisplayAlerts = FalsenewWorkbook.SaveAs Filename:=savePath, FileFormat:=xlCSVnewWorkbook.Close SaveChanges:=FalseApplication.DisplayAlerts = True' 关闭源工作簿,不保存更改srcWorkbook.Close SaveChanges:=False' 提示信息MsgBox "工作表已成功保存为CSV: " & savePath
End Sub
- 调用这个宏,传入适当的参数。例如:
Call SaveSheetAsCSV("C:\path\to\your\workbook.xlsx", "Sheet1", "C:\path\to\output.csv")
其中,C:\path\to\your\workbook.xlsx
是Excel工作簿的路径,Sheet1
是要保存为CSV的工作表名称,C:\path\to\output.csv
是CSV文件要保存的路径。
这种方法可以确保原始的Excel文件不会被修改或另存为其他格式,同时满足将特定工作表导出为CSV的需求。
增加一个条件:确保在将工作表保存为CSV文件时只包含数值
Sub SaveSheetAsCSVWithValuesOnly(workbookPath As String, sheetName As String, savePath As String)Dim srcWorkbook, newWorkbook As WorkbookDim srcWorksheet, newWorksheet As Worksheet' 打开源工作簿Set srcWorkbook = Workbooks.Open(workbookPath, ReadOnly:=True)' 获取指定的工作表Set srcWorksheet = srcWorkbook.Sheets(sheetName)' 创建新工作簿并设置新工作表Set newWorkbook = Workbooks.AddSet newWorksheet = newWorkbook.Sheets(1)' 复制值到新工作簿For Each cell In srcWorksheet.UsedRangenewWorksheet.Cells(cell.Row, cell.Column).Value = cell.ValueNext cell' 保存新工作簿为CSVApplication.DisplayAlerts = FalsenewWorkbook.SaveAs Filename:=savePath, FileFormat:=xlCSVnewWorkbook.Close SaveChanges:=FalseApplication.DisplayAlerts = True' 关闭源工作簿,不保存更改srcWorkbook.Close SaveChanges:=False' 提示信息MsgBox "工作表已成功保存为CSV(仅包含数值): " & savePath
End Sub