Here is the way to do it !...
Module Code :
-------------
'Copies the files specified in the pFrom member to the location specified in the pTo member.
Private Const FO_COPY = &H2&
'Deletes the files specified in pFrom (pTo is ignored.)
Private Const FO_DELETE = &H3&
Private Const FO_MOVE = &H1& 'Moves the files specified in pFrom to the location specified in pTo.
Private Const FO_RENAME = &H4& 'Renames the files specified in pFrom.
Private Const FOF_ALLOWUNDO = &H40& 'Preserve Undo information.
Private Const FOF_CONFIRMMOUSE = &H2& 'Not currently implemented.
'handle to the parent window for the progress dialog box.
Private Const FOF_CREATEPROGRESSDLG = &H0&
'Perform the operation on files only if a wildcard file name (*.*) is specified.
Private Const FOF_FILESONLY = &H80&
'The pTo member specifies multiple destination files (one for each source file) rather than one directory where all source files are to be deposited.
Private Const FOF_MULTIDESTFILES = &H1&
'Respond with Yes to All for any dialog box that is displayed.
Private Const FOF_NOCONFIRMATION = &H10&
'Does not confirm the creation of a new directory if the operation requires one to be created.
Private Const FOF_NOCONFIRMMKDIR = &H200&
'operated on a new name in a move, copy, or rename operation if a file with the target name already exists.
Private Const FOF_RENAMEONCOLLISION = &H8&
'Does not display a progress dialog box.
Private Const FOF_SILENT = &H4&
'Displays a progress dialog box but does not show the file names.
Private Const FOF_SIMPLEPROGRESS = &H100&
'If FOF_RENAMEONCOLLISION is specified, the hNameMappings member will be filled in if any files were renamed.
Private Const FOF_WANTMAPPINGHANDLE = &H20&
'
'
' The SHFILOPSTRUCT is not double-word aligned. If no steps are
' taken, the last 3 variables will not be passed correctly. This
' has no impact unless the progress title needs to be changed.
Private Type SHFILEOPSTRUCT
hwnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAnyOperationsAborted As Long
hNameMappings As Long
lpszProgressTitle As String
End Type
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)
Private Declare Function SHFileOperation Lib "Shell32.dll" Alias "SHFileOperationA" (lpFileOp As Any) As Long
Source Code :
CopyOfFiles:
Label3.Caption = "Copy in progress..."
Dim result As Long, lenFileop As Long
Dim foBuf() As Byte
Dim fileop As SHFILEOPSTRUCT
' ==================================================================================================== ============
lenFileop = LenB(fileop) ' double word alignment increase
ReDim foBuf(1 To lenFileop) ' the size of the structure.
With fileop
.hwnd = Me.hwnd
.wFunc = FO_COPY
' The files to copy separated by Nulls and terminated by two nulls
.pFrom = SourceFile & "\*.*" & vbNullChar & vbNullChar
' .fFlags = FOF_SIMPLEPROGRESS Or FOF_FILESONLY
.pTo = DestPath & vbNullChar & vbNullChar
End With
Copie:
' Now we need to copy the structure into a byte array
Call CopyMemory(foBuf(1), fileop, lenFileop)
' Next we move the last 12 bytes by 2 to byte align the data
Call CopyMemory(foBuf(19), foBuf(21), 12)
result = SHFileOperation(foBuf(1))
If result <> 0 Then ' Operation failed
Select Case Err.LastDllError
Case 0: MsgBox "Operation cancel...", vbInformation: Exit Sub
Case 2: GoTo Copie
Case Else ' Show the error returned from the API.
MsgBox Err.LastDllError & " - Error when removing files", vbCritical
End Select
Else
If fileop.fAnyOperationsAborted <> 0 Then
MsgBox "Operation Failed", vbCritical
Exit Sub
End If
End If