| 所在主题: | |
| 文件名: vba.txt | |
| 资料下载链接地址: https://bbs.pinggu.org/a-1796530.html | |
| 附件大小: | |
|
如题。
R处理excel文件,可以用xlsx包,也可以把xlsx批量转化为csv。我发现用vba把xlsx批量转化为csv更快(数据量大时) 1、用xlsx包,这个包需要配置java环境 1、 安装最新版本的java。如果你用的R是64位的,请下载64位java。 总之这个适合:小数据、实验式,以及可以自由配置java环境的地方 2、放弃用xlsx包,利用VBA直接把xlsx转化为csv格式。 前情略,具体请参看我原来的随笔。。我改写的VBA代码如下: 代码总是莫名其妙没有……直接插附件吧 Sub getCSV() '这是网上看到的xlsx批量转化,而改写的一个xlsx批量转化csv格式 '1)批量转化csv参考:http://club.excelhome.net/thread-1036776-2-1.html '2)创建文件夹参考:http://jingyan.baidu.com/article/f54ae2fcdc79bc1e92b8491f.html '这里设置屏幕不动,警告忽略 Application.DisplayAlerts = False Application.ScreenUpdating = False Dim data As Workbook '这里用GetOpenFilename弹出一个多选窗口,选中我们要转化成csv的xlsx文件, file = Application.GetOpenFilename(MultiSelect:=True) '用LBound和UBound For i = LBound(file) To UBound(file) Workbooks.Open Filename:=file(i) Set data = ActiveWorkbook Path = data.Path '这里设置要保存在目录下面的csv文件夹里,之后可以自己调 '参考了里面的第一种方法 On Error Resume Next VBA.MkDir (Path & "\csv") With data .SaveAs Path & "\csv\" & Replace(data.Name, ".xlsx", ".csv"), xlCSV .Close True End With Next i '弹出对话框表示转化已完成,这时去相应地方的csv里查看即可 MsgBox "已转换了" & (i-1) & "个文档" Application.ScreenUpdating = True Application.DisplayAlerts = True End Sub 把代码复制进excel的vba编辑器里,然后运行getcsv这个宏,会跳出一个窗口,要求选择你要转化的xlsx文件。(可多选) 选中以后,等一段时间,再回到xlsx文件下,会多一个csv文件夹,里面就是我们要导入R的文本文件了。 这个方法的好处是: 1、操作简单,直接依托于excel的VBA操作,不用配置java环境,之后沟通成本/换电脑成本小 2、特别适用于有一定数据量,但是数据格式整齐的文件,譬如从某数据端读入的数据。用fread还可以控制读取的行(skip=NNN),代码写入整洁方便。就算有一些异行数据,也可以事先用VBA进行操作,简单方便。 总之我最后是放弃xlsx包,选择用VBA批量转化xlsx文件了。 供大家参考。细节的话请看我原来的博文:http://www.cnblogs.com/weibaar/p/4506144.html |
|
熟悉论坛请点击新手指南
|
|
| 下载说明 | |
|
1、论坛支持迅雷和网际快车等p2p多线程软件下载,请在上面选择下载通道单击右健下载即可。 2、论坛会定期自动批量更新下载地址,所以请不要浪费时间盗链论坛资源,盗链地址会很快失效。 3、本站为非盈利性质的学术交流网站,鼓励和保护原创作品,拒绝未经版权人许可的上传行为。本站如接到版权人发出的合格侵权通知,将积极的采取必要措施;同时,本站也将在技术手段和能力范围内,履行版权保护的注意义务。 (如有侵权,欢迎举报) |
|
京ICP备16021002号-2 京B2-20170662号
京公网安备 11010802022788号
论坛法律顾问:王进律师
知识产权保护声明
免责及隐私声明