使用VBA实现xls批量转xlsx

Published on Aug 9, 2019 in 编程 with 0 comment

我用Office 2019编辑过的一批xls文件,在Office 2010下无法打开,但另存为xlsx后可以,所以需要将xls批量转换为xlsx。

此时,我的逗比同事要去抖音给我搜教程……

在不借助第三方工具的情况下,使用Excel内置的VBA即可实现功能。

首先,打开VBA编辑器:

  1. 菜单栏开发工具→Visual Basic

    若菜单栏没有开发工具,则在菜单栏下方的功能区右键,选择「自定义功能区」,弹出新窗口中,在右侧勾选「开发工具」即可。

  2. 快捷键:Alt + F11

然后,在VBA编辑器中粘贴以下代码:

'***********访问当前文件夹下所有子文件夹及文件,
Dim iFile(1 To 100000) As String
Dim count As Integer
Sub xls2xlsx()iPath = ThisWorkbook.PathOn Error Resume Nextcount = 0zdir iPathFor i = 1 To countIf iFile(i) Like "*.xls" And iFile(i) <> ThisWorkbook.FullName ThenMyFile = iFile(i)FilePath = Replace(MyFile, ".xls", ".xlsx")If Dir(FilePath, 16) = Empty ThenSet WBookOther = Workbooks.Open(MyFile)Application.ScreenUpdating = FalseActiveWorkbook.SaveAs Filename:=FilePath, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=FalseWBookOther.Close SaveChanges:=False      '解决不能close 文件问题Application.ScreenUpdating = TrueEnd If'注意:如果不想保留原xls文件,则把下面语句的注视去掉(删掉前面的「’」即可)'Kill (MyFile)End IfNext
End Sub
Sub zdir(p)       '访问当前文件夹下所有子文件夹及文件Set fs = CreateObject("scripting.filesystemobject")For Each f In fs.GetFolder(p).FilesIf f <> ThisWorkbook.FullName Then count = count + 1: iFile(count) = fNextFor Each m In fs.GetFolder(p).SubFolderszdir mNext
End Sub

最后,点击上方的运行(F5)。

注意:

  1. 以上代码默认不删除原文件,执行完后,目录下会同时存在File.xls和File.xlsx,如果不想保留,则把21行:Kill(Myfile)前的注释去掉;
  2. 如果想批量将xlsx转换为xls,则把12行代码替换为:FilePath = Replace(MyFile, ".xlsx", ".xls")即可。

使用VBA实现xls批量转xlsx(遍历当前文件夹以及子文件夹)相关推荐

  1. VBA遍历文件夹及子文件夹中所有文件

    VBA中遍历文件方法很多,但很多方法又有局限,DIR的方法很难遍历子文件夹文件.FileSearch方法在office 2007中MS把Application对象FileSearch方法删除了.所有我 ...

  2. 遍历文件夹(含子文件夹)方法

    做法基本上有2大类: ① 经典Dir ② FSO 即 Scripting. File System Object 的[文件系统对象]脚本方法. 一开始可能Dir方法较为普遍,但随着水平的提高,应用FS ...

  3. c++利用windows api遍历指定文件夹及其子文件夹中的文件

    以下代码在vs2008中测试通过,利用FindFirstFile,FindNextFile函数遍历了我电脑上全路径为"C:\\Users\\v_tianboli\\Desktop\\wind ...

  4. java ftp遍历所有子文件_Java 遍历指定文件夹及子文件夹下的文件

    Java 遍历指定文件夹及子文件夹下的文件 /** * 遍历指定文件夹及子文件夹下的文件 * * @author testcs_dn * @date2014年12月12日下午2:33:49 * @pa ...

  5. BAT 遍历文件夹和子文件夹下所有文件

    BAT 遍历文件夹和子文件夹下所有文件 参考网址:http://www.cnblogs.com/tangxin-blog/p/5703146.html echo off & color 0A ...

  6. vb遍历文件夹(含子文件夹)

    vb遍历文件夹(含子文件夹) vb 遍历文件夹(含子文件夹) 这段时间写软件需要遍历文件夹及文件,以前读写文件都是用BASIC 的老的I/O 方法操作, 仔细阅读了FSO 的操作并在网上整理下资料,得 ...

  7. 【C++】window下 使用c++遍历文件夹及其子文件夹和文件,并打印文件路径及各文件内容

    这两天一直在学习如何使用c++遍历文件夹.读取文件内容和写入文件. 话不多说,直接上代码 /* * 文件功能:递归遍历文件夹,遍历文件夹及其子文件夹和文件.打印文件夹名称.文件名称和文件数目 * * ...

  8. VBA实现xls批量转换为xlsx(非新增副本文件)

    对别人的代码做了改良,实现真正的转换,而非同时存在xls文件和xlsx文件. 我在大部分语句上补充了注释,因为有同事提出了这个工作需求,之前从来没接触过VBScript语言,看了别人的代码一眼过去也是 ...

  9. 批量改变文件夹和子文件夹中图片格式的两种方法

    生活中,我们通常会遇到这种问题:一个文件夹内部有多个子文件夹,每个文件夹内部有很多图片,我们想改变这些图片的格式. 例如.png格式图片支持背景透明,但我们想把它变成背景不透明的.jpg图片.又比如. ...

最新文章

  1. 【栈】日志分析(BSOJ2981)
  2. 新上映的电影不在影院也一样能看到
  3. 【正一专栏】西班牙国家德比不再激情四射可更让人不舍
  4. python生成100个随机数_Python_0——100闭区间产生3个随机数,两种方法排序
  5. python爬取csdn排名积分等信息
  6. Unity3D在C#编程中的一些命名空间的引用及说明
  7. Python环境 及安装
  8. java base64转bitmap,如何将Bitmap位图与base64字符串相互转换
  9. ant man 什么意思_浅谈为什么很多蓝牙模块厂家选择nRF52832?
  10. [leetcode] Single Number 查找数组中的单数
  11. GridView控件属性及应用(转载)
  12. 小学认识计算机评课,小学信息技术评课.doc
  13. JAVA、Linux部署运维常用命令
  14. helm 错误 Error: INSTALLATION FAILED: must either provide a name or specify --generate-name
  15. yarn 升级最新版本
  16. 9.7 电机控制程序基础
  17. Oracle 、SQL多字段分组统计
  18. Vue项目使用域名访问配置
  19. 不完整信息系统----容差关系 tolerance relation
  20. 防止ARP欺骗的简单方法——静态绑定网关

热门文章

  1. 路由交换技术之代理ARP
  2. cmmi实践访谈测试ppt_CMMI模型基础知识考试试题-(标准答案).xls
  3. 程序员如何正确饲养乌龟?
  4. php html5定位,HTML HTML5 地理定位 - 闪电教程JSRUN
  5. OpenStack 虚拟机冷/热迁移功能实践与流程分析
  6. 温控仪C语言程序,模糊PID控制温控系统设计C语言程序代码
  7. matlab版本转换
  8. sklearn——转换器(Transformer)与预估器(estimator)
  9. 小米手机更改默认应用
  10. Linux 磁盘- 存储