Copie des fichiers d'un dossier à un autre à l'aide de vba
Il y a d'autres posts sur ce sujet, je le sais. Cependant, j'ai un code qui est différent de tous les codes que j'ai vu ici (quand on parle de ce sujet).
L'erreur que je reçois est dire que le fichier n'a pas pu être trouvé. Mais c'est impossible, puisque je suis à la recherche pour le fichier dans le même dossier que je suis en utilisant comme SOURCE ofs.CopyFile.
J'ai donc de corriger cette erreur et, si possible, je voudrais copier le fichier vers un autre dossier et modifier le nom. Par exemple, si j'ai le fichier "Excel.xls" je voudrais copier avec le nom "Excel_old.xls" est-ce possible à l'aide du code ci-dessous ou bien est-il trop dur qu'il ne vaut pas la peine?
C'est le code:
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
Vous devez vous connecter pour publier un commentaire.
C'est parce que
fso.CopyFile "C:\Users\Desktop\Files\file", "C:\Users\Desktop\Files\Old\file"
n'est pas un fichier... C'est juste une chaîne de caractères dans un fichier fictif de regards de celui-ci.Si, au lieu de la ligne a été
fso.CopyFile fil.Path, "C:\Users\Desktop\Files\Old\" & fil.name
... qui pourrait fonctionner.Mis à jour pour ajouter:
J'ai juste tenté le suivant à l'aide de (substrat de l'ordinateur nom d'utilisateur ci-dessous) et eu du succès en déplacement tout dans un nouveau dossier:
La seule différence est qu'ici j'ai utilisé du fil.ParentFolder pour obtenir mon Bureau, puis jeté dans un nouveau dossier que j'ai créé sur mon bureau (avant l'exécution du script) nommé "test".
fso.CopyFile
il doit être soitfile
oufil.name
selon l'OP du code.fil.path
pasfil.name
. Toutes mes excuses. Je suppose que je suis un peu rouillé avec l'ofs.fso.CopyFile fil.Path, "C:\Users\Desktop\Files\file", "C:\Users\Desktop\Files\Old\file"
et a obtenu la même erreur d'Incompatibilité de Type. J'ai aussi essayéfso.CopyFile fil.Path, "C:\Users\Desktop\Files\file", "C:\Users\Desktop\Files\Old\"
et encore en train d'erreur 13n
etd
mais pensé que je pourrais inclure pour le plaisir. Le code que j'ai utilisé a été ajoutée à ma réponse.Pour déplacer tous les fichiers dans un dossier: