Excel复制当前路径的所有文件到指定文件夹【三种方法】

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Excel复制当前路径的所有⽂件到指定⽂件夹【三种⽅法】
⽹站名称: Excel技巧⽹ | Excel专家栖息⾕ | 微软中⽂技术社区合作伙伴
站内采编: 素材源帖
署名作者: 芐⾬
版权声明: 版权归本站与作者共有除本站官⽅外⾮作者本⼈转载须经许可并注明出处
本⽂来⾃:
引⽤作品:
适⽤版本: 2013 2010 2007
语⾔环境: 简体中⽂
学习⽅法: 掌握Excel技巧的关键是动⼿操作 | 下载 ≠ 知识
如何复制当前路径的所有⽂件到指定⽂件夹
⽅法⼀:FileCopy
可在VBA中直接引⽤,单个⽂件的copy。

所以本例中⽤循环+复制完成。

语法:
FileCopy 源⽂件名,⽬标⽂件名【两个参数都是必选的,且都包含路径。


注:如果想要对⼀个已打开的⽂件使⽤ FileCopy 语句,则会产⽣错误。

所以⽤了
ActiveWorkbook.SaveCopyAs +完整路径
代码:
Sub 复制当前路径的所有⽂件到指定⽂件夹_FileCopy()
t = Timer
Dim 当前路径 As String, ⽬标路径 As String
Dim fs
On Error Resume Next
当前路径 = ThisWorkbook.Path & "\"
⽬标路径 = "C:\汇总数据\" '⽬标⽬录
fs = Dir(当前路径 & "*") '如果只复制xls则把 "*" 改成 "*.xls")
Do While fs <> ""
FileCopy 当前路径 & fs, ⽬标路径 & fs
fs = Dir
Loop
ActiveWorkbook.SaveCopyAs ⽬标路径 &
'*******如果想要对⼀个已打开的⽂件使⽤ FileCopy 语句,则会产⽣错误******
MsgBox Format(Timer - t, "0.0000")
End Sub
⽅法⼆:CopyFile
需调⽤FileSystemObject,多个⽂件可使⽤通配符。

语法:
object.CopyFile source, destination[, overwrite]
CopyFile ⽅法语法有如下⼏部分:
部分描述
object必需的。

object始终是⼀个 FileSystemObject 的名字。

source 必需的。

指明⼀个或多个要被复制⽂件的字符串⽂件说明,它可以包括通配符。

destination必需的。

指明 source 中的⼀个或多个⽂件要被复制到的接受端的字
符串,不允许有通配符。

选项的。

Boolean 值,它表⽰存在的⽂件是否被覆盖。

如果是 True,
overwrite⽂件将被覆盖;如果是 False,它们不被覆盖。

缺省值是 True。

注意
如果 destination 具有只读属性设置,不论 overwrite 值如
何,CopyFile 都将失败。

代码:
Sub 复制当前路径的所有⽂件到指定⽂件夹_CopyFile()
t = Timer
Dim Fso As Object
Dim 当前路径 As String, ⽬标路径 As String
当前路径 = ThisWorkbook.Path & "\*.*" '如果只复制xls则把 "*.*" 改成 "*.xls"
⽬标路径 = "C:\汇总数据\" '⽬标路径
Set Fso = CreateObject("Scripting.FileSystemObject")
Fso.CopyFile 当前路径, ⽬标路径
Set Fso = Nothing
MsgBox Format(Timer - t, "0.0000")
End Sub
⽅法三:XCopy
批处理,shell调⽤
⽂中⽤了 shell Environ("ComSpec")
其中:Environ("ComSpec") 可以获得下列⽂字"c:\windows\system32\cmd.exe"
语法:
XCOPY source [destination]
source指定要复制的⽂件。

destination指定新⽂件的位置和/或名称。

指定要复制⽂件也可带通配符。

还包含很多参数。

XCOPY是COPY的扩展,可以把指定的⽬录连⽂件和⽬录结构⼀并拷贝,但不能拷贝系统⽂件。

代码:
Sub 复制当前路径的所有⽂件到指定⽂件夹_XCOPY()
t = Timer
Dim 当前路径 As String, ⽬标路径 As String
当前路径 = ThisWorkbook.Path & "\*.*" '如果只复制xls则把 "*.*" 改成 "*.xls"
⽬标路径 = "C:\汇总数据\" '⽬标路径
Shell Environ("comspec") & " /c xcopy " & 当前路径 & " " & ⽬标路径, vbHide
MsgBox Format(Timer - t, "0.0000")
End Sub
三种⽅法速度对⽐
附件中有⽂件101个,每个约20K左右
FileCopy:约0.3秒
CopyFile:约0.06秒
XCopy: 约0.007秒
使⽤批处理,超快。

附件:
复制当前路径的所有⽂件到指定⽂件夹_芐⾬.zip。

相关文档
最新文档