VBA pour copier un fichier d'un répertoire à un autre

J'ai donc un fichier d'accès qu'il faut régulièrement copier dans un autre répertoire, en remplaçant la dernière version. J'aimerais utiliser une macro Excel pour y parvenir, et j'aimerais également renommer le fichier au cours du processus.

Par exemple

   fileName = "X:\Database\oldName.accdb"
   copyDestination = "Y:\dbstore\"
   newName = "newName.accdb"

Existe-t-il un moyen simple de faire cela ?

Cette méthode est encore plus facile si vous vous contentez de peu d'options :

FileCopy source, destination
Commentaires (3)
Solution

Utilisez les méthodes appropriées dans Scripting.FileSystemObject. Ainsi, votre code sera plus facilement portable vers VBScript et VB.net. Pour commencer, vous devez inclure les éléments suivants :

Dim fso As Object
Set fso = VBA.CreateObject("Scripting.FileSystemObject")

Ensuite, vous pouvez utiliser

Call fso.CopyFile(source, destination[, overwrite] )

où source et destination sont les noms complets (y compris les chemins) du fichier.

Voir https://docs.microsoft.com/en-us/office/vba/Language/Reference/user-interface-help/copyfile-method

Commentaires (2)

Une chose qui m'a causé un énorme mal de tête lors de l'utilisation de ce code (pourrait affecter d'autres personnes et j'aurais aimé que quelqu'un laisse un commentaire comme celui-ci ici pour que je le lise) :

  • Mon objectif est de créer un tableau de bord d'accès dynamique, qui nécessite que ses tables liées soient mises à jour.
  • J'utilise les méthodes de copie décrites ci-dessus pour remplacer les CSVs liés existants par une version mise à jour de ceux-ci.
  • L'exécution manuelle du code ci-dessus à partir d'un module fonctionne bien.
  • L'exécution d'un code identique à partir d'un formulaire lié aux données CSV a donné lieu à l'erreur d'exécution 70 (Permission refusée), même si la première étape de mon code était de fermer ce formulaire (ce qui aurait dû déverrouiller le fichier CSV afin qu'il puisse être écrasé).
  • Je pense maintenant que malgré la fermeture du formulaire, le fichier CSV obsolète reste verrouillé pendant l'exécution du VBA associé à ce formulaire.

Ma solution sera d'exécuter le code (sur l'événement de la minuterie) à partir d'un autre formulaire caché qui s'ouvre avec la base de données.

Commentaires (0)