Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Private Sub XXXX( )
.
.
.
Dim str1 As String
str1 = String(255, Chr(0))
Dim lngRc As Long
lngRc = GetSystemDirectory(str1, 255)
If lngRc > 0 Then str1= Left(str1, lngRc) & ""
If BuscarCopiar("MiFile.aaa", str1 & "FileCopiado.xxx", "C:") Then
MsgBox "OK"
Else
MsgBox "KO"
End If
.
.
.
End Sub
Public Function BuscarCopiar(ByVal FileName As String, ByVal Destino As String, Optional ByVal Root As String)
'FileName = nombre de archivo pc (sin ruta) a buscar
'Destino = nombre de archivo pc (con ruta) destino
'Root = opcional, carpeta desde la que comenzar a buscar
'Esta función puede tomarse su tiempo, así que paciencia
Dim sngMouseP As Single
sngMouseP = Screen.MousePointer
Screen.MousePointer = 11
On Error GoTo Err_Buscar
Dim strDires() As String, strDir As String
Dim lng1 As Long, lng2 As Long, lng3 As Long
Dim lngCta As Long, str1 As String, IND1 As Boolean
If Root = "" Then Root = App.Path
If Right(Root, 1) <> "" Then Root = Root & ""
ReDim strDires(1)
strDires(0) = Root
BucleDir:
For lng1 = lng2 To lng3
Root = strDires(lng1)
strDir = Dir(Root, vbDirectory)
Do While strDir <> ""
If strDir <> "." And strDir <> ".." _
And (GetAttr(Root & strDir) And vbDirectory) = vbDirectory Then
lngCta = lngCta + 1
str1 = Root & strDir & ""
ReDim Preserve strDires(lngCta)
strDires(lngCta) = str1
IND1 = True
End If
strDir = Dir
Loop
Next lng1
lng3 = UBound(strDires)
lng2 = lng1
If lng2 <= lng3 And IND1 Then GoTo BucleDir
IND1 = False
For lngCta = 0 To UBound(strDires)
strDir = Dir(strDires(lngCta) & FileName)
If strDir <> "" Then
FileName = strDires(lngCta) & FileName
IND1 = True
Exit For
End If
Next lngCta
If IND1 Then
FileCopy FileName, Destino
BuscarCopiar = True
End If
Exit_Buscar:
Screen.MousePointer = sngMouseP
Exit Function
Err_Buscar:
MsgBox "(" & Err.Number & ") " & Err.Description _
, vbCritical, "Error buscar y copiar"
Resume Exit_Buscar
End Function
Mira, ahí tienes el trabajo hecho.
No es que hayas pedido que alguien lo hiciera por ti, pero es como si lo hubieses hecho...
Intenta ser más concreto en tus consultas y nunca pretendas obtener de un foro el código que te resuelva tu aplicación. Claro que para mi es mucho más sencillo escribir un ejemplo que intentar explicar el funcionamiento de una instrucción, pero una cosa es escribir un ejemplo y otra resolverte el problema (por eso la gente suele cobrar). Sobre estos temas se ha hablado mucho en otros posts y prefiero no volver sobre el tema.
En fin... una y no más.
Suerte.