Achei esta rotina na internet e funciona legal:
em um modulo:
'Rotina de Backup
Public Type SHFILEOPSTRUCT
hwnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAnyOperationsAborted As Boolean
hNameMappings As Long
lpszProgressTitle As String
End Type
Public Declare Function SHFileOperation Lib "shell32.dll" Alias _
"SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
Public Const FO_COPY = &H2
Public Const FOF_ALLOWUNDO = &H40
Public Sub ShellCopyFile(Source As String, Dest As String)
Dim result As Long
Dim fileop As SHFILEOPSTRUCT
With fileop
.hwnd = 0
.wFunc = FO_COPY
'The files to copy separated by Nulls and terminated by 2 nulls
.pFrom = Source & vbNullChar & vbNullChar
'or to copy all files use this line
'.pFrom = "C:*.*" & vbNullChar & vbNullChar
'The directory or filename(s) to copy into terminated in 2 nulls
.pTo = Dest & vbNullChar & vbNullChar
.fFlags = FOF_ALLOWUNDO
End With
result = SHFileOperation(fileop)
If result <> 0 Then 'Operation failed
'Msgbox the error that occurred in the API.
MsgBox Err.MaxDllError, vbCritical Or vbOKOnly
Else
If fileop.fAnyOperationsAborted <> 0 Then
MsgBox "Operation Failed", vbCritical Or vbOKOnly
End If
End If
End Sub
' no botão Backup do formulario
Screen.MousePointer = 11
ShellCopyFile txtArq.Text, txtDest.Text
Screen.MousePointer = 0
MsgBox "Cópia efetuada com sucesso"
End If
qq. coisa entre em contato : pref-trib@terraroxa.com.br