There are some similar posts about this topic, I know. However, I have a code which is different than all codes I have seen here (when talking about this subject).
The e
For moving all files in a folder:
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
To copy all files and sub-folders recursively, use the following code:
Public Sub CopyDirectory(ByVal source As String, ByVal destination As String)
Dim fso, file, folder As Object
Set fso = CreateObject("Scripting.FileSystemObject")
'Delete existing folder
If fso.FolderExists(destination) Then fso.DeleteFolder destination, True
fso.CreateFolder destination
For Each file in fso.GetFolder(source).files
fso.CopyFile file.Path, destination & "\" & file.Name
Next file
For Each folder in fso.GetFolder(source).SubFolders
CopyDirectory folder.Path, destination & "\" & folder.Name
Next folder
End Sub
Use as following:
CopyFile "C:\Path To Source", "C:\Path to destination"
Note that the paths should not include a trailing directory separator (\
).
This is because fso.CopyFile "C:\Users\Desktop\Files\file", "C:\Users\Desktop\Files\Old\file"
is not a file... It's just a string to a dummy file from the looks of it.
If instead the line was
fso.CopyFile fil.Path, "C:\Users\Desktop\Files\Old\" & fil.name
... that might work.
Updated to add:
I just attempted the following using (subbing computer username for below) and had success moving everything into a new folder:
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
The only difference here is that I used fil.ParentFolder to get my Desktop and then tossed it into a new folder I created on my desktop (prior to running the script) named "test".