1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| Private Declare PtrSafe Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationW" (lpFileOp As SHFILEOPSTRUCT) As Long
Private Type SHFILEOPSTRUCT
hwnd As LongPtr
wFunc As Long
pFrom As LongPtr
pTo As LongPtr
fFlags As Integer
fAnyOperationsAborted As Long
hNameMappings As LongPtr
lpszProgressTitle As LongPtr
End Type
Private Const FO_COPY = 2
Private Const FOF_MULTIDESTFILES = &H1
'Private Const FOF_NOCONFIRMATION = &H10
'Private Const FOF_SIMPLEPROGRESS = &H100
Public Sub TransfereFichiers(ByVal aSrc As Collection, ByVal Dest As String)
Dim fso As Object
Dim DstPath As String, elem
Dim SrcList As String, DstList As String
Set fso = CreateObject("Scripting.FileSystemObject")
If aSrc.Count = 0 Then: Exit Sub
For Each elem In aSrc
SrcList = SrcList & elem & vbNullChar
DstPath = fso.BuildPath(Dest, fso.GetFileName(elem))
DstList = DstList & DstPath & vbNullChar
Next
SrcList = SrcList & vbNullChar
DstList = DstList & vbNullChar
Dim lpFileOp As SHFILEOPSTRUCT
lpFileOp.pFrom = StrPtr(SrcList)
lpFileOp.pTo = StrPtr(DstList)
lpFileOp.wFunc = FO_COPY
lpFileOp.fFlags = FOF_MULTIDESTFILES
SHFileOperation lpFileOp
End Sub |
Partager