分享

VBA基础入门(24)FSO CopyFile

 L罗乐 2017-08-29


了解了如何遍历文件夹获取每个文件的名字,属性等等。




本期我们分享其他关于FSO的应用:


  • CopyFile

  • CopyFolder


顾名思义,文件的复制,文件夹的复制。


例如:

有 A, B 两个文件夹,A文件夹里面有8000文件,但在其中有300你想要的文件,并且你要把这些文件复制到B文件夹中去。


当然,如果你需要复制的文件很少,十个八个的,直接搜索,复制粘贴就好了,但是,你需要复制的文件很多的话,你再一个个搜索,想必累死也弄不完吧,这就需要我们用工具来完成,用bat来完成也是不错的选择,如果只是进行这么一次,单次的需求。以后我们会详细的说明,会用vba 结合dos命令来完成一些需求。


首先,我们先想想大概的过程,根据给定的list中的文件名,做个循环,将文件从A复制到B,界面呢,需要一个list的地方就够了。


例如下图,左侧A列可以存放这些文件名的list,根据需要可以增加清除list的方法,可以用我们之前分享的FileDialog功能增加文件夹的选择,来填充copy路径,可以增加信息框来显示执行的进度,状态等等,可用statusbar代替。

最主要的就是A列的list。


【代码】

我们先看下主要的Main过程:


要点1:

之前没详细说明的获取非空值最大行的方法

maxrow = Range('A1000').End(xlUp).Row

注:当然如果你的行数有可能大于1000你就不能像上面这么写了,写个最大的值就好了。


要点2:

事前check

Call pathcheck

对于必要的参数要进行一些check,不然不选择路径的情况下就会报错


要点3:

CopyFile

fso.CopyFile inpath & '\' & file, outpath & '\'

前面是指定到文件名的路径,后面是出力的路径

如果是文件夹的复制就把CopyFile换成CopyFolder,后面的出力路径要追加'& file '  同入力路径一样的。

注:上面的file是带文件后缀的,例如,aaa.txt,bbb.xls,ccc.ppt。。。


这个代码还有问题,对于list中的文件名,在文件夹A中一定存在,上面的代码不会出错,那么如果list中的文件,在A中根本不存在,那么在CopyFile的时候就会报错,代码要严谨。


那么如何判断list中的文件在A文件夹中是否存在呢?

下期分享《FileExists》



PS:还在为工作效率上不来而烦恼嘛,快来加入我们吧。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多