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中的重要性及基本用法