ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 17882|回复: 16

[求助] 如何用vba批量将.csv文件转为.xls文件

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-8-29 15:36 | 显示全部楼层 |阅读模式
如题,数据文件很大,一个一个打开另存太慢了

TA的精华主题

TA的得分主题

发表于 2014-8-29 17:21 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
如果csv文件比较规范,可以考虑使用ADO法:
  1. Sub ADO()
  2.     Dim Fso As Object, File As Object, cnn As Object, SQL$, f, p
  3.     Application.ScreenUpdating = False
  4.     p = ThisWorkbook.Path & ""
  5.     Set Fso = CreateObject("Scripting.FileSystemObject")
  6.     Set cnn = CreateObject("adodb.connection")
  7.     cnn.Open "provider=Microsoft.jet.OLEDB.4.0;Extended Properties =Excel 8.0;Data Source=" & ThisWorkbook.FullName
  8.     For Each File In Fso.GetFolder(ThisWorkbook.Path).Files
  9.         If File.Name Like "*.csv" Then
  10.             f = Replace(File, ".csv", ".xls")
  11.             If Fso.FileExists(f) Then Fso.DeleteFile (f)
  12.             SQL = "SELECT * INTO [Excel 8.0;Database=" & f & ";]." & Replace(File.Name, ".csv", "") & " FROM [Text;FMT=Delimited;HDR=Yes;DATABASE=" & p & ";]." & File.Name
  13.             cnn.Execute SQL
  14.         End If
  15.     Next
  16.     Set File = Nothing
  17.     Set Fso = Nothing
  18.     cnn.Close
  19.     Set cnn = Nothing
  20.     Application.ScreenUpdating = True
  21. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2014-8-29 17:25 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
请测试下面附件
ADO用vba批量将csv文件转为xls文件.rar (10.73 KB, 下载次数: 553)

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-8-29 20:13 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
上面版主大人,如果csv文件很大,超过xls格式最大的6万多行,想转为xlsx是否可以

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-8-29 20:19 | 显示全部楼层
zhaogang1960 发表于 2014-8-29 17:21
如果csv文件比较规范,可以考虑使用ADO法:

版主大人,不行,提示C:\Documents and Settings\Administrator\桌面\QQ截图20140829201609.jpg
另外如果我的csv文件很大,超过6万多行的xls文件限值,是否可转为xlsx格式
编码如何写呀!
望版主大人不吝赐教

TA的精华主题

TA的得分主题

发表于 2014-8-29 21:29 | 显示全部楼层
leooja 发表于 2014-8-29 20:19
版主大人,不行,提示
另外如果我的csv文件很大,超过6万多行的xls文件限值,是否可转为xlsx格式
编码如 ...
  1. Sub ADO()
  2.     Dim Fso As Object, File As Object, cnn As Object, SQL$, f, p
  3.     Application.ScreenUpdating = False
  4.     p = ThisWorkbook.Path & ""
  5.     Set Fso = CreateObject("Scripting.FileSystemObject")
  6.     Set cnn = CreateObject("adodb.connection")
  7.     cnn.Open "provider=Microsoft.Ace.OLEDB.12.0;Extended Properties =Excel 12.0;Data Source=" & ThisWorkbook.FullName
  8.     For Each File In Fso.GetFolder(ThisWorkbook.Path).Files
  9.         If File.Name Like "*.csv" Then
  10.             f = Replace(File, ".csv", ".xlsx")
  11.             If Fso.FileExists(f) Then Fso.DeleteFile (f)
  12.             SQL = "SELECT * INTO [Excel 12.0 xml;Database=" & f & ";]." & Replace(File.Name, ".csv", "") & " FROM [Text;FMT=Delimited;HDR=Yes;DATABASE=" & p & ";]." & File.Name
  13.             cnn.Execute SQL
  14.         End If
  15.     Next
  16.     Set File = Nothing
  17.     Set Fso = Nothing
  18.     cnn.Close
  19.     Set cnn = Nothing
  20.     Application.ScreenUpdating = True
  21. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-8-29 21:31 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
请测试下面附件
ADO用vba批量将csv文件转为xlsx文件.rar (33.14 KB, 下载次数: 525)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-8-30 10:56 | 显示全部楼层
zhaogang1960 发表于 2014-8-29 21:31
请测试下面附件

谢版主,可以转换,但csv文件有5行表头,转换后就没有了,就没法识别处理数据了,如何处理!
劳烦赐教,谢谢!
20140404_1.rar (4.29 KB, 下载次数: 79)

TA的精华主题

TA的得分主题

发表于 2014-8-30 12:03 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
leooja 发表于 2014-8-30 10:56
谢版主,可以转换,但csv文件有5行表头,转换后就没有了,就没法识别处理数据了,如何处理!
劳烦赐教, ...

该CSV文件不适合使用ADO,还是逐个打开吧

TA的精华主题

TA的得分主题

发表于 2015-5-6 10:25 | 显示全部楼层
我要转换多个文件夹下的csv成xls,这个脚本改怎么修改呢?求指点,谢谢大神
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-18 17:48 , Processed in 0.047976 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表