'Path:原文件夹路径;afterPath:目标文件夹路径
Dim Spath As String
Set fs = CreateObject("Scripting.FileSystemObject")
Spath = Dir(Path, vbDirectory)
Do While Len(Spath)
If Spath <>"." And Spath <>".." Then
fs.CopyFolder Path, afterPath
Spath = Dir()
End If
Loop
End Sub
————————————————
版权声明:本文为CSDN博主「前端小菜鸟007」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_41844140/article/details/103188537
假设我们需要将文件夹“C:\FolderA”中的符合下面条件的文件,拷贝到“C:\FolderB”中。拷贝条件:扩展名是xls或xlsx,并且文件名中不包含“OK”字样。
在Excel中插入一个ActiveX按钮,在按钮的事件中加入如下代码:
Private Sub CommandButton1_Click()
Dim Fso As Object
Set Fso = CreateObject("Scripting.FileSystemObject")
Dim fs, f, f1, fc
On Error Resume Next
Set fs = CreateObject("scripting.filesystemobject")
Set f = fs.GetFolder("C:\FolderA")
Set fc = f.Files
If Err.Number <>0 Then
MsgBox "From Folder Open Error!" &vbCrLf &Err.Description &vbCrLf
GoTo Err
End If
On Error GoTo 0
For Each f1 In fc
If (Right(f1, 3) = "xls" Or Right(f1, 4) = "xlsx") And InStr(1, f1, "OK") <= 0 Then
On Error Resume Next
Fso.CopyFile f1, SetFolderPath("C:\FolderB")) &GetFileName(f1)
If Err.Number <>0 Then
MsgBox "File Copy Error!" &vbCrLf &Err.Description
GoTo Err
End If
On Error GoTo 0
End If
Next
MsgBox "File Copy is over."
Err:
Set fs = Nothing
Set f = Nothing
Set f1 = Nothing
Set fc = Nothing
Set Fso = Nothing
End Sub
方法一:FileCopy可在VBA中直接引用,单个文件的copy。
语法:
FileCopy 源文件名,目标文件名
注:如果想要对一个已打开的文件使用 FileCopy 语句,则会产生错误。
示例:
FileCopy 当前路径, 目标路径
方法二:CopyFile
需调用FileSystemObject,多个文件可使用通配符。
语法:
object.CopyFile source, destination[, overwrite]
CopyFile 方法语法有如下几部分:
部分描述
object必需的。object始终是一个 FileSystemObject 的名字。
source必需的。指明一个或多个要被复制文件的字符串文件说明,它可以包括通配符。
destination必需的。指明 source 中的一个或多个文件要被复制到的接受端的字符串,不允许有通配符。
overwrite选项的。Boolean 值,它表示存在的文件是否被覆盖。如果是 True,文件将被覆盖;如果是 False,它们不被覆盖。缺省值是 True。注意如果 destination 具有只读属性设置,不论 overwrite 值如何,CopyFile 都将失败。
示例:
Set Fso = CreateObject("Scripting.FileSystemObject")
Fso.CopyFile 当前路径, 目标路径
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)