Copies one or more files from one location to another.
object.CopyFile source, destination, [ overwrite ]
The CopyFile method syntax has these parts:
|object||Required. The object is always the name of a FileSystemObject.|
|source||Required. Character string file specification, which can include wildcard characters, for one or more files to be copied.|
|destination||Required. Character string destination where the file or files from source are to be copied. Wildcard characters are not allowed.|
|overwrite||Optional. Boolean value that indicates if existing files are to be overwritten. If True, files are overwritten; if False, they are not. The default is True. Note that CopyFile will fail if destination has the read-only attribute set, regardless of the value of overwrite.|
Wildcard characters can only be used in the last path component of the source argument. For example, you can use:
FileSystemObject.CopyFile "c:\mydocuments\letters\*.doc", "c:\tempfolder\"
But you can't use:
FileSystemObject.CopyFile "c:\mydocuments\*\R1???97.xls", "c:\tempfolder"
If source contains wildcard characters, or destination ends with a path separator (****), it is assumed that destination is an existing folder in which to copy matching files. Otherwise, destination is assumed to be the name of a file to create. In either case, three things can happen when an individual file is copied:
- If destination does not exist, source gets copied. This is the usual case.
- If destination is an existing file, an error occurs if overwrite is False. Otherwise, an attempt is made to copy source over the existing file.
- If destination is a directory, an error occurs.
An error also occurs if a source using wildcard characters doesn't match any files. The CopyFile method stops on the first error it encounters. No attempt is made to roll back or undo any changes made before an error occurs.
Files copied to a new destination path will keep the same file name. To rename the copied file, simply include the new file name in the destination path. For example, this will copy the file to a new location and the file in the new location will have a different name:
FileSystemObject.CopyFile "c:\mydocuments\letters\sample.doc", "c:\tempfolder\sample_new.doc"
The following code illustrates the use of the CopyFile method.
Sub CopyFileDemo() Dim fso As Object Set fso = CreateObject("Scripting.FileSystemObject") 'Copy just the Products.xlsx file fso.CopyFile "D:\WorkBook\Products.xlsx", "D:\Temp\" 'Copy the Products.xlsx file and rename the copied file fso.CopyFile "D:\WorkBook\Products.xlsx", "D:\Temp\Products_New.xlsx" 'Copy all files with XLSX extension to destination folder fso.CopyFile "D:\WorkBook\*.xlsx", "D:\Temp\" 'Copy all files to destination folder fso.CopyFile "D:\WorkBook\*.*", "D:\Temp\" 'Copy all files in subfolders of D:\WorkBook to destination folder fso.CopyFile "D:\WorkBook\*\*.*", "D:\Temp\" End Sub