Comment copier un fichier ?
La méthode la plus simple consiste à utiliser l'instruction de Visual Basic FileCopy : FileCopy "C:\Mes Documents\File.txt", "C:\Windows\CopyFile.txt" Si cette méthode présente l'avantage de la simplicité d'utilisation, elle souffre aussi de quelques limitations : - elle ne permet pas de gérer les conflits, quand le fichier de destination est déjà présent.
- Si le fichier de destination est déjà ouvert, l'instruction échoue
A noter également que FileCopy est une instruction et pas une fonction; En cas d'échec ou d'erreur, il convient de récupérer l'erreur en utilisant le mécanisme de "On error Goto ...". L'utilisation de l'API CopyFile, plus complète, permet de palier à ces problèmes. L'exemple suivant présente l'utilisation de cette API : Option Explicit
Private Declare Function CopyFileA Lib "kernel32" _ ( _ ByVal lpExistingFileName As String, _ ByVal lpNewFileName As String, _ ByVal bFailIfExists As Long _ ) _ As Long
Private Const MAX_PATH = 260
Function MyFileCopy(ByVal Source As String, _ ByVal Destination As String, _ Optional ByVal Overwrite As Boolean = True) As Boolean If Len(Destination) > MAX_PATH Or Len(Source) > MAX_PATH Then MyFileCopy = False Else If (Overwrite) Then MyFileCopy = (CopyFileA(Source, Destination, 0) <> 0) Else MyFileCopy = (CopyFileA(Source, Destination, 1) <> 0) End If End If End Function
Private Sub Test()
Dim ret As Boolean
ret = MyFileCopy("C:\Mainfolder\Subfolder\File.txt", "\\remotecomputer\sharedfolder\File.txt", False) ret = MyFileCopy("C:\Mainfolder\Subfolder\File.txt", "\\remotecomputer\sharedfolder\File.txt", True) ret = MyFileCopy("C:\Mainfolder\Subfolder\File.txt", "\\remotecomputer\sharedfolder\File.txt") End Sub
Il est aussi possible d'utiliser la librairie FSO (FileSystemObject) qui offre une gestion des fichiers aussi simple que peu efficace. Pour aller plus loin Voir aussi : |