mira yo he utilizado la sig funcion
Public Function Existearchivo(ByVal nombrearch As String) As String
'devuelve verdad si existe el archivo pasado como argumento
'en forma de cadena o falso si no existe.
'admite los comodines para nombres de archivos
'si el argumento es una cadena vacía, devuelve el siguiente archivo
'que cumple con el comodín.
'se debe llamar en un ciclo para que devuelve los restantes archivos que
'cumplan con el formato si se usan comodines.
Dim mensaje As String
On Error GoTo Huboerror
If Len(nombrearch) > 0 Then
Existearchivo = Dir(nombrearch)
Else
Existearchivo = Dir()
End If
Exit Function
Huboerror:
Const ERR_DISKNOTREADY = 71, ERR_DEVICEUNAVAILABLE = 68
If (Err = ERR_DISKNOTREADY) Then
mensaje = "Coloque un disco flexible en la unidad"
If MsgBox(mensaje, vb_Exclamation + vbOKCancel) = vbOK Then
Resume
Else
Resume Next
End If
ElseIf Err = ERR_DEVICEUNAVAILABLE Then
mensaje = "La unidad o la ruta de acceso " + nombrearch + " no existe."
MsgBox mensaje, vbExclamation
Resume Next
Else
mensaje = "Ocurrió el Error inesperado número " + Str(Err) + Chr$(13) + "La ruta de acceso no existe: " + nombrearch
MsgBox mensaje, vbInformation
Resume Next
End If
Resume
End Function
y lo mando llamar de las sig. manera
dim resultado, ruta as string
ruta="c:cajaversqlinicial.dip"
resultado=Existearchivo(ruta)
y para copiar archivos, checa la instruccion FileCopy, de tu ayuda
bueno espero y te sirva