利用VBA批量转换xls文件格式的工作簿

VBAMatrix 2024-11-05 13:06:11
引言

xls文件格式是Microsoft Excel 2003及更早版本的默认文件格式;而xlsx文件格式是Microsoft Excel 2007及以后版本的默认文件格式。相比xls文件格式,xlsx文件格式的文件更小,支持更多新特性与功能,兼容更多第三方软件,安全性也更高。唯一的缺憾是,xlsx不支持VBA宏代码。

幸运的是,在Microsoft Excel 2007及以后版本,还引入了宏启用工作簿文件格式xlsm。xlsm文件格式支持VBA宏代码,允许用户自定义自动化操作。

总的来说,xlsx和xlsm两种格式都提供了比旧的xls格式更丰富的功能以及更大的灵活性。也正因如此,在实际工作中,我们经常也有批量转换xls文件格式为xlsx或xlsm文件格式的需求。

xls-->xlsx/xlsm

实现思路

1.弹出文件对话框,选择指定文件夹;

2.在该文件夹下,遍历所有xls文件格式的工作簿;

3.如果xls文件格式的工作簿附有VBA项目,转换为xlsm格式;如果没有VBA项目,则转换为xlsx格式。

VBA代码

Sub批量转换XLS格式的工作簿()

Application.ScreenUpdating = False

Application.DisplayAlerts = False

With Application.FileDialog(msoFileDialogFolderPicker)

.Title = "请选择批量转换XLS工作簿的文件夹路径"

If .Show Then

Dim pathSelected As String, fn As  String

pathSelected = .SelectedItems(1)

fn = Dir(pathSelected & "\*.xls")

Dim wb As Workbook

Do While fn <> ""

If Right(fn, 3) = "xls"  Then

Set wb =  Application.Workbooks.Open(pathSelected & "\" & fn, 0)

If wb.HasVBProject Then

wb.SaveAs  Filename:=pathSelected & "\" & fn & "m", _

FileFormat:=xlOpenXMLWorkbookMacroEnabled

wb.Close False

Else

wb.SaveAs  Filename:=pathSelected & "\" & fn & "x", _

FileFormat:=xlOpenXMLWorkbook

wb.Close False

End If

End If

fn = Dir()

Loop

Set wb = Nothing

End If

End With

Application.DisplayAlerts = True

Application.ScreenUpdating = True

End Sub

推荐阅读

利用VBA操作Excel名称管理器

利用VBA获取指定文件类型的详细信息

利用VBA在Excel批量插入图片批注

利用VBA将多个单元格转为复选框

Dir函数在VBA中的重要性及基本用法

0 阅读:10

VBAMatrix

简介:分享MS Excel/Word的实用技巧以及VBA代码等。