日常工作中,常需将多个CSV文件转为Excel格式,一个一个打开另存太费时。 今天分享一个VBA脚本,一键实现:选择CSV文件夹 → 选择输出目录 → 自动批量转换,全程无需手动干预!
.csv文件.xlsx格式,文件名保持不变Sub ConvertCsvToExcel() ' 定义变量 Dim fd As FileDialog Dim srcFolder As String Dim destFolder As String Dim fileName As String Dim wb As Workbook Dim saveFileName As String ' ------------------ 1. 选择源文件夹(CSV所在目录)------------------ Set fd = Application.FileDialog(msoFileDialogFolderPicker) With fd .Title = "请选择包含 CSV 文件的文件夹" .AllowMultiSelect = False If .Show = -1 Then srcFolder = .SelectedItems(1) Else MsgBox "未选择源文件夹,程序结束。", vbExclamation Exit Sub End If End With If Right(srcFolder, 1) <> "\" Then srcFolder = srcFolder & "\" ' ------------------ 2. 选择目标文件夹(保存Excel文件)------------------ Set fd = Application.FileDialog(msoFileDialogFolderPicker) With fd .Title = "请选择保存 Excel 文件的文件夹" .AllowMultiSelect = False If .Show = -1 Then destFolder = .SelectedItems(1) Else MsgBox "未选择目标文件夹,程序结束。", vbExclamation Exit Sub End If End With If Right(destFolder, 1) <> "\" Then destFolder = destFolder & "\" ' 关闭屏幕更新和警告提示 Application.ScreenUpdating = False Application.DisplayAlerts = False ' ------------------ 3. 遍历并转换所有 CSV 文件 ------------------ fileName = Dir(srcFolder & "*.csv") Do While fileName <> "" ' 打开 CSV 文件 Set wb = Workbooks.Open(srcFolder & fileName) ' 构造输出文件完整路径:目标文件夹 + 原文件名(不含.csv) + .xlsx saveFileName = destFolder & Left(fileName, Len(fileName) - 4) & ".xlsx" ' 另存为 Excel 工作簿(xlsx 格式) wb.SaveAs fileName:=saveFileName, FileFormat:=xlOpenXMLWorkbook wb.Close SaveChanges:=False ' 继续下一个文件 fileName = Dir Loop ' 恢复设置 Application.ScreenUpdating = True Application.DisplayAlerts = True MsgBox "转换完成!所有 CSV 文件已保存至:" & vbCrLf & destFolder, vbInformationEnd SubAlt+F11进入VBA编辑器,插入模块并粘贴代码。F5运行,依次选择CSV所在文件夹和保存Excel的文件夹。由于公众号平台更改了推送规则,为确保您能及时收到Excel每日一学的原创分享,请记得关注公众号并设为星标⭐,同时欢迎转发
、点赞
或在看
。
获取完整代码: 在公众号后台回复「20260213」获取本文示例文件及完整代码。