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

引言

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

推荐阅读

  1. 利用VBA删除工作簿/工作表的所有批注
  2. 利用VBA+SQL查询Excel工作表数据(基本查询)
  3. Excel一键将多个单元格转为复选框
  4. 利用VBA断开多个工作簿的所有链接源
  5. 利用VBA获取指定文件类型的详细信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值