|
楼主 |
发表于 2014-12-27 09:44
|
显示全部楼层
2.3拷贝文件夹
CopyFolder方法用于复制文件夹,即将一个文件夹的内容(包括其子文件夹)复制到其他位置。其语法为:
fso.CopyFolder Source,Destination[,OverwriteFiles]
参数Source必需,指定要复制的文件夹的路径和文件夹名,String类型,必须使用通配符或者非路径分隔符来结束。参数Destination必需,指定文件夹复制操作的目标文件夹的路径,String类型。参数OverwriteFiles可选,表示是否被覆盖一个现有文件的标志,True表示覆盖,False表示不覆盖,Boolean类型。
通配符只能在参数Source中使用,但是只能放在最后的组件中。在参数Destination中不能使用通配符。
除非不允许使用通配符,否则就可以把源文件夹中的所有子文件夹和文件都复制到Destination指定的文件夹中,也就是说CopyFolder方法是递归的。
如果参数Destination以一个路径分隔符结束或者参数Source以一个通配符结束,CopyFolder方法就认为参数Source中的指定的文件夹存在于参数Destination中,否则就创建这样一个文件夹。例如,假设有如下的文件夹结构:
CopyFolder "C:\Rootone\*","C:\RootTwo"
产生如下的文件夹结构:
CopyFolder "C:\Rootone","C:\RootTwo\"
产生如下的文件夹结构:
如果参数Destination指定的目标路径或任意文件被设置成只读属性,则不论OverwriteFiles的值如何,CopyFolder方法者将失效。
如果OverwriterFiles设置为False,而参数Source指定的源文件夹或任何文件存在于参数Destination中,将产生运行时错误“文件已经存在”。
如果在复制多个文件夹时出现错误,CopyFolder方法立即停止复制操作,不再复制余下要复制的文件。该方法不具有撤销产生错误前文件复制操作的返回功能。
如果用户有充分的权限,source或destination都可以是网络路径或共享名,例如:
CopyFolder "C:\Rootone","\\NTSERV1\d$\RootTwo\"
Sub 按钮1_Click()
Application.ScreenUpdating = False
Set fso = CreateObject("Scripting.FileSystemObject")
sfolder = ThisWorkbook.Path & "\tt"
dfolder = ThisWorkbook.Path & "\txt\"
If Not fso.folderexists(sfolder) Then
MsgBox sfolder & " :不存在"
Exit Sub
End If
If Not fso.folderexists(dfolder) Then
MsgBox dfolder & " :不存在"
Exit Sub
End If
fso.copyfolder sfolder, dfolder
Application.ScreenUpdating = True
End Sub
|
|