问题分析:

Excel2007以前的格式是.xls,之后的格式是.xlsx。打开单独的一个Excel文档,使用“另存为”功能,可以很轻松的转换格式。但是面对几百个Excel表这样就太累了,搜索很久,也没发现一个工具可以直接批量进行格式转换。

最终发现可以使用VBA来实现批量转换Excel格式的功能。大家不要被吓到,VBA我也不懂,代码是从别人那里搞到的,现在也只是知道了怎么使用,但这足够解决问题了

VBA介绍:

1、VBA是一种编程语言,它依托于Office软件,不能独立的运行,通过VBA可以实现各种Office软件操作的自动化。

2、Visual Basic for Applications(VBA)是Visual Basic的一种宏语言,主要能用来扩展Windows的应用程式功能。使用Excel的VBA开发的Excel文档,在Excel中运行时需要开启Excel的宏功能,否则此文档的VBA自动化功能将被完全屏蔽,文档的功能无法实现。

执行条件:

1、Office2007及以上版本的Excel

2、Excel启用宏

工具下载:

可以自己新建Excel,编写VBA代码,代码在后面。也可以使用我提供的已经写好的两个,以下是百度网盘中的链接:

《xls2xlsx.xlsm》

《Convert2xlsx.xlsm》

分享的内容无法访问了,百度网盘有点小坑啊,不过代码就是下边贴出来的那些,手动粘贴吧...

功能介绍:

先介绍这两个工具功能,大家可以根据需要下载。

《xls2xlsx.xlsm》会在所在文件夹目录中、包括子目录中,遍历所有.xls格式的文件,执行“另存为”操作,然后在原文件当前位置另存为一个同名的.xlsx格式的文件。

比如:执行前xls2xlsx.xlsm所在的文件夹中有3个.xls格式的文件,同时包含一个子文件夹,子文件夹中也有3个.xls格式的文件

    

执行后,会生成如下文件:

    

《Convert2xlsx.xlsm》会在所在文件夹目录中(不包括子目录),遍历所有.xls格式的文件,执行“另存为”操作,然后在当前路径下生成一个文件夹xlsx,这个文件夹中放了所有新生成的文件。

比如:执行前Convert2xlsx.xlsm所在的文件夹中有3个.xls格式的文件

执行后,会生成如下文件:

    

执行方法:

1、从上面下载任意一个工具,或者新建一个Excel;

2、启用宏操作

一般情况下,打开Excel的时候,会弹出如下警告

如果弹出了这个警告,直接启用就可以了;如果没有出现的话,请参考以下百度经验启用宏3、编写执行VBA代码

(a)在工作表界面按下组合快捷键Alt+F11或者右键单击任意一个工作表标签,在弹出的右键快捷菜单单击“查看代码”进入VBA编辑环境

(b)如果是下载的我的工具,可以跳过此步骤;如果是新建的Excel,此时在VBA编辑环境中的“代码窗口”复制粘贴以下两个代码中的一个:

《xls2xlsx.xlsm》

1 '***********访问当前文件夹下所有子文件夹及文件,

2 Dim iFile(1 To 100000) As String

3 Dim count As Integer

4

5 Subxls2xlsx()6 iPath =ThisWorkbook.Path7 On Error Resume Next

8 count = 0

9 zdir iPath10 For i = 1 Tocount11 If iFile(i) Like "*.xls" And iFile(i) <> ThisWorkbook.FullName Then

12 MyFile =iFile(i)13 FilePath = Replace(MyFile, ".xls", ".xlsx")14 If Dir(FilePath, 16) = Empty Then

15 Set WBookOther =Workbooks.Open(MyFile)16 Application.ScreenUpdating = False

17 ActiveWorkbook.SaveAs Filename:=FilePath, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False

18 WBookOther.Close SaveChanges:=False '解决不能close 文件问题

19 Application.ScreenUpdating = True

20 End If

21 End If

22 Next

23 End Sub

24

25 Sub zdir(p) '访问当前文件夹下所有子文件夹及文件

26 Set fs = CreateObject("scripting.filesystemobject")27 For Each f Infs.GetFolder(p).Files28 If f <> ThisWorkbook.FullName Then count = count + 1: iFile(count) =f29 Next

30 For Each m Infs.GetFolder(p).SubFolders31 zdir m32 Next

33 End Sub

《Convert2xlsx.xlsm》

1 Subxls2xlsx()2 Dim FilePath, MyFile, iPath, Name, OutPath As String

3 iPath =ThisWorkbook.Path4 OutPath = Dir(iPath & "xlsx", vbDirectory)5 If OutPath = "" Then

6 MkDir (iPath & "xlsx")7 End If

8 MyFile = Dir(iPath & "*.xls")9

10 If MyFile <> "" Then

11 Do

12 On Error Resume Next

13 If MyFile = ThisWorkbook.Name Then MyFile = Dir

14 Workbooks.Open (iPath & "" &MyFile)15 MyFile = Replace(MyFile, ".xls", ".xlsx")16 Name = "" &MyFile17 FilePath = iPath & "xlsx" &Name18 Application.ScreenUpdating = False

19 ActiveWorkbook.SaveAs Filename:=FilePath, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False

20 Workbooks(MyFile).Close True

21 Application.ScreenUpdating = True

22 MyFile = Dir

23 Loop While MyFile <> ""

24 End If

25 End Sub

(c)按下F5快捷键执行这段代码或者在菜单中单击“运行子过程/用户窗体”命令

PS:需要说明的是,在执行过程中,不要去做其他的事情,不然可能会中断程序的运行

后来有同学提了些问题,最后执行代码的时候,并没有达到效果。先来看下正常的效果,会先弹出一个对话框,然后运行

出问题的原因是:在文件夹中的 .xls的后缀是大写的。这导致了代码不能执行,不过这种情况稍微修改下就可以了

我还试了一下,如果同目录下 .xls 和 .xlsx同时存在,也执行不了……

原创文章,欢迎转载,转载请注明出处!

vba html 转化为 xlsx,使用VBA批量转换Excel格式,由.xls转换成.xlsx相关推荐

  1. 【VBA】批量转化表格格式(xls转xlsx、csv转xlsx)

    VBA-批量转化表格格式(xls转xlsx.csv转xlsx) Excel可以通过另存为方式改变表格格式,如果遇到大批表格需要转化格式,手动另存为效率尤其慢. 我们可以使用VBA批量转化表格格式. 分 ...

  2. import win32com.client 将xls改成xlsx,操作excel报错

    import win32com.client 将xls改成xlsx,操作excel报错 一:代码如下: excel = win32com.client.DispatchEx('Excel.Applic ...

  3. python编辑excel文件_python自动化之修改excel(包括xls文件和xlsx文件)

    修改xls 利用xlrd 模块 和 xlutils 模块 示例代码(xls) /use/bin/env python coding:utf-8 import xlrd import os import ...

  4. 前端使用xlsx、file-saver实现自定义excel格式导出(列宽、字体、边框、行高)

    前端使用xlsx.file-saver实现excel导出 前端使用xlsx.file-saver实现excel导出 1.下载依赖 2.在需要导出excel的页面使用依赖 3.实现导出excel文件功能 ...

  5. 把xls转成xlsx格式

    大文件很慢呐 maven依赖 <dependency><groupId> e-iceblue </groupId><artifactId>spire.x ...

  6. jeecg导出excel设置样式XLS(03)与XLSX(07)

    jeecg版本依赖 <modelVersion>4.0.0</modelVersion><groupId>org.jeecgframework.boot</g ...

  7. ArcGIS怎么批量将tif格式的影像转换成png/jpg格式

    1.首先打开ArcGIS,打开工具箱 2.选择:转换工具-转为栅格-栅格转其他格式 3.依次按下面操作就可以了

  8. 用openpyxl库批量修改excel格式小工具

    假如有10个文档放在面前,每个文档里面有十二张表,需要修改格式,header变粗,正文呈现某种字体,全都是中间对齐,保留两位小数等等,我们这里使用openpyxl库来实现: 首先,上面和左边的空行都删 ...

  9. excel格式批量转csv

    excel格式批量转csv 背景 思路 结果预览 完整代码 代码解读 延申思考 背景 好不容易把数据表格整出来发给地理可视化同事,反馈说arcgis对xlsx后缀不友好,没有注册类,希望改成csv格式 ...

最新文章

  1. Hadoop DFS源码研究之---Hadoop RPC机制
  2. Jobs added with no trigger must be durable
  3. 大牛深入讲解!9次Java面试经验总结
  4. python matplotlib画图是设置线宽
  5. Redis 会遇到的「坑」,你踩过几个?
  6. webworker应用场景_典型应用场景 · OpenResty最佳实践-最新版 · 看云
  7. webpack打包优化_如何提升 Webpack 打包速度
  8. 基于知识图谱和图卷积神经网络的应用和开发
  9. 最全Redis49个面试题目及答案:线程设计+哨兵+复制+事务+集群+持久化等
  10. python部署到服务器上解析不到模块_在服务器上部署kafka-python包
  11. 【数据分享】全国县市2000-2020年医疗卫生机构床位数数据(excel和shp格式)
  12. 答云淡风轻:汉化Rails报错信息,部署发布,NT服务
  13. python爬取当当图片和信息
  14. Sketchup 程序自动化(二)Ruby 基础、单位转换
  15. 基于RBF神经网络的数据预测
  16. html 动画接口,10款 Web 动画插件
  17. 四种最令人讨厌的编程语言
  18. GNU Radio3.8:创建自定义的QPSK块(C++)
  19. 怎么样把亚马逊EC2的帐号清除干净
  20. 主机开启双网卡不能上网的一个解决办法

热门文章

  1. ContentObserver去实现拒收短信或短信黑名单等功能
  2. 解决python关于UnicodeEncodeError: 'gbk' codec can't encode character '\xa3'报错的问题
  3. 数据API开发如何快速上手:先了解什么是数据API生命周期管理
  4. 二分法中 mid=beg+(end-beg)/2 与 mid=(beg+end)/2 的区别?
  5. 2020年小学几年级有计算机课,2019-2020年最新小学信息技术三年级上册第1课初识计算机备课教学参考.doc...
  6. 使用Mathematica绘制星形线(Astroid)
  7. 联想电脑重装系统总结
  8. 将当前容器保存为本地镜像
  9. 如何通过BIOS设置自动开机
  10. 使用selenium实现豆瓣电影信息的自动化搜索