我用Office2019编辑了一批xls文件,在Office2010下打不开,但是可以保存为xlsx,所以我们需要把xls批量转换成xlsx。这时候我搞笑的同事准备去抖音帮我搜教程……不用第三方工具,使用Excel自带的VBA就可以实现功能。首先打开VBA编辑器:菜单栏开发工具→VisualBasic如果菜单栏没有开发工具,在菜单栏下方的功能区上右击,选择“自定义功能区”,在弹出的新窗口中,检查“开发工具”。快捷键:Alt+F11然后,在VBA编辑器中粘贴如下代码:'************访问当前文件夹下的所有子文件夹和文件,DimiFile(1To100000)AsStringDimcountAsIntegerSubxls2xlsx()iPath=ThisWorkbook.PathOnErrorResumeNextcount=0zdiriPathFori=1计数IfiFile(i)Like"*.xls"AndiFile(i)<>ThisWorkbook.FullNameThenMyFile=iFile(i)FilePath=Replace(MyFile,".xls",".xlsx")如果Dir(FilePath,16)=EmptyThenSetWBookOther=Workbooks.Open(MyFile)Application.ScreenUpdating=FalseActiveWorkbook.SaveAsFilename:=FilePath,FileFormat:=xlOpenXMLWorkbook,CreateBackup:=FalseWBookOther.CloseSaveChanges:=False'解决无法关闭文件的问题Application.ScreenUpdating=TrueEndIf'注意:如果不想保留原来的xls文件,去掉下面的语句(删除前面的“'”即可)'Kill(MyFile)EndIfNextEndSubSubzdir(p)'访问当前文件夹下的所有子文件夹和文件setfs=CreateObject("脚本.filesystemobject")对于每个fInfs.GetFolder(p).FilesIff<>ThisWorkbook.FullNameThencount=count+1:iFile(count)=fNextForEachmInfs.GetFolder(p).SubFolderszdirmNextEndSub最后点击最上面的运行(F5)注意:以上代码默认不删除原文件,执行后目录下会同时存在File.xls和File.xlsx,如果不删除不想保留,把第21行:Kill(Myfile);如果要批量将xlsx转xls,把第12行代码换成:FilePath=Replace(MyFile,".xlsx",".xls”)。本文首发于我的个人网站“花墨世界”关注公众号查看我的更多文章:花墨世界
