Excel 使用vba将文件从一个文件夹复制到另一个文件夹
我知道,关于这个话题也有一些类似的帖子。然而,我有一个代码,它不同于我在这里看到的所有代码(当谈论这个主题时) 我收到的错误是找不到该文件。但这是不可能的,因为我正在fso.CopyFile中用作源文件的同一文件夹中搜索该文件 因此,我必须修复此错误,如果可能的话,我希望将文件复制到另一个文件夹并更改名称。例如,如果我有“Excel.xls”文件,我想用“Excel\u old.xls”这个名称进行复制,是可以使用下面的代码进行复制,还是太难而不值得复制 代码如下:Excel 使用vba将文件从一个文件夹复制到另一个文件夹,excel,vba,file,directory,Excel,Vba,File,Directory,我知道,关于这个话题也有一些类似的帖子。然而,我有一个代码,它不同于我在这里看到的所有代码(当谈论这个主题时) 我收到的错误是找不到该文件。但这是不可能的,因为我正在fso.CopyFile中用作源文件的同一文件夹中搜索该文件 因此,我必须修复此错误,如果可能的话,我希望将文件复制到另一个文件夹并更改名称。例如,如果我有“Excel.xls”文件,我想用“Excel\u old.xls”这个名称进行复制,是可以使用下面的代码进行复制,还是太难而不值得复制 代码如下: Sub CopyFiles(
Sub CopyFiles()
'Macro to copy all files modified yesterday
Dim n As String, msg As String, d As Date
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set fils = fso.GetFolder("C:\Users\Desktop\Files\").Files
'Verify all files in the folder, check the modification date and then copy
'to another folder (named Old)
For Each fil In fils
n = fil.Name
d = fil.DateLastModified
If d >= Date - 1 Then
file = n
'The following line is where the error occurs
fso.CopyFile "C:\Users\Desktop\Files\file", "C:\Users\Desktop\Files\Old\file"
End If
Next fil
End Sub
这是因为
fso.CopyFile“C:\Users\Desktop\Files\file”,“C:\Users\Desktop\Files\Old\file”
不是一个文件。。。从外观上看,它只是一个虚拟文件的字符串
如果不是这样的话
fso.CopyFile文件路径,“C:\Users\Desktop\Files\Old\”&fil.name
。。。那可能行得通
更新为添加:
我刚刚尝试使用(以下为subbing计算机用户名)执行以下操作,并成功地将所有内容移动到新文件夹中:
Sub test()
Dim fso As FileSystemObject
Dim fsoFiles As Files
Dim fil As File
Set fso = New FileSystemObject
Set fils = fso.GetFolder("C:\Users\<MY USERNAME>\Desktop\").Files
For Each fil In fils
n = fil.Name
d = fil.DateLastModified
fso.CopyFile fil.Path, fil.ParentFolder & "\test\" & fil.Name
Next fil
End Sub
子测试()
将fso设置为文件系统对象
将F文件设置为文件
将文件作为文件
Set fso=新文件系统对象
设置fils=fso.GetFolder(“C:\Users\\Desktop\”).Files
对于每一个fil In fils
n=文件名
d=fil.DateLastModified
fso.CopyFile文件fil.Path、fil.ParentFolder&“\test\”和fil.Name
下一场
端接头
这里唯一的区别是,我使用fil.ParentFolder获取我的桌面,然后将其放入我在桌面上创建的名为“test”的新文件夹中(在运行脚本之前) 用于移动文件夹中的所有文件:
Sub MoveFiles()
Dim MyFile As String
MyFile = Dir("C:\AAAA\*.*")
Do Until MyFile = ""
Name "C:\AAAA\" & MyFile As "C:\AAA\" & MyFile
MyFile = Dir
Loop
End Sub
要递归复制所有文件和子文件夹,请使用以下代码:
Public子目录(ByVal源作为字符串,ByVal目标作为字符串)
Dim fso、文件、文件夹作为对象
设置fso=CreateObject(“Scripting.FileSystemObject”)
'删除现有文件夹
如果fso.FolderExists(destination),则fso.DeleteFolder destination为True
fso.CreateFolder目标
对于fso.GetFolder(source.files)中的每个文件
fso.CopyFile file.Path、目标和“\”file.Name
下一个文件
对于fso.GetFolder(源)子文件夹中的每个文件夹
CopyDirectory文件夹。路径、目标和“\”文件夹。名称
下一个文件夹
端接头
使用方法如下:
CopyFile "C:\Path To Source", "C:\Path to destination"
请注意,路径应该而不是包含尾部目录分隔符(
\
)。没错。但是在fso.CopyFile
之后有一个输入错误,根据OP的code.yes,它应该是file
或fil.name
。。应该是fil.path
而不是fil.name
。我道歉。我想我对fso有点生疏了。使用了fso.CopyFile fil.Path,“C:\Users\Desktop\Files\file”,“C:\Users\Desktop\Files\Old\file”
,得到了相同的错误,类型不匹配。我还尝试了fso.CopyFile fil.Path,“C:\Users\Desktop\Files\file”,“C:\Users\Desktop\Files\Old\”
,但仍然得到错误13,应该是:“C:\Users\Desktop\Files\”&文件,“C:\Users\Desktop\Files\Old\”&文件尝试过了,还是同样的错误,我正在搜索,但我真的很纠结。在复制之前,您如何设置它,以便检查目标文件夹中是否存在该文件(最新版本?)?