Usa este código a ver que tal.
Private Function Copiar(Byval Origen as string, Byval Destino as string) as Boolean
Dim intO as integer, intD as integer, byt1() as Byte
On Error Goto Error_Copiar
intO = FreeFile
Open Origen For Binary as #intO
' En el caso de que el fichero no fuera muy grande.
Redim byt1(1 to Lof(intO))
'Si el fichero es demasiado grande, deberás implementar un buffer dimensionando 'byt1' al tamaño que tu veas y haciendo un bucle hasta que llegues a la longitud del fichero.
intD = FreeFile
Open Destino For Binary as #intD
Get #intO,,byt1
Put #intD,,byt1
Copiar = True
Salir_Copiar:
On Error resume next
Close #intO
Close #intD
Exit Function
Error_Copiar:
MsgBox Err.Description
Resume Salir_Copiar
End Function
Suerte.