(VBA) Ejecuta macro si encuentra archivo

Hola Expertos
Tengo una hoja de calculo archivo1.xls con una macro al inicio que solo se debe ejecutar si existe otra hoja de calculo (archivo2.xls) en el mismo directorio. El problema es que la ruta de los archivos no es siempre la misma, con lo cual no puedo especificar una ruta fija.
Necesito una comprobación por VBA para que busque archivo2.xls y en caso de encontrarlo en el mismo directorio que archivo1.xls siga adelante con la macro.
Gracias de antemano

1 Respuesta

Respuesta
1
Prueba este código
Private Sub Workbook_Open()
  Set fs = Application.FileSearch
    With fs
        .LookIn = ThisWorkbook.Path
        .Filename = "archivo2.xls"
        If .Execute(SortBy:=msoSortByFileName, _
        SortOrder:=msoSortOrderAscending) > 0 Then
            MsgBox "se ha encontrado el fichero en el directorio"
            MsgBox "este es el punto donde se ejecuta la macro"
         End If
    End With
End Sub
Gracias por tu rapidez
Hay un pequeño problema. Este código funciona perfectamente siempre y cuando el archivo2.xls exista, pero cuando ese archivo no existe, bien porque lo hayan nombrado de otra manera por error, o bien porque efectivamente no está, me sale una ventana pidiéndome la ruta para especificar donde se encuentra.
En ese caso se liá parda, porque no basta con que le diga la ruta una vez, sino que se la tengo que dar (o cancelar) 900 veces, puesto que hay 900 celdas que actualizar. PFFFFF!
Imaginate que paliza! Como no puedo cancelar 900 veces tengo que pulsar CTR+ALT+SUPR y con el administrador de tareas, matar EXCEL.
¿Se puede solucionar de otra manera esta particularidad?
Gracias otra vez
El tema es que las pruebas que yo he realizado, lo he hecho con el archivo2 y sin el archivo2 en el mismo directorio. Y simplemente cuando esta el fichero en el mismo directorio, me da el mensaje de ejecutar la macro y si no encuentra el fichero archovo2, no hace nada.
¿Qué versión de excel tienes instalada?
Hola master !
He hecho pruebas cambiándole el nombre a archivo2.xls y resulta que si le añado texto al principio del nombre del archivo, por ej: pruebaarchivo2.xls lo pilla como bueno; mientras que si le añado texto al final, por ej: archivo2prueba.xls efectivamente dice que no existe el que está buscando.
¿Por eso la confusión de mi respuesta anterior (porque las pruebas las hacia renombrando el archivo2.xls a backup_archivo2.xls). Crees que se puede afinar la búsqueda a que coincida exactamente con el nombre? Mi version de excel es 2003 sp3.
Gracias por tu tiempo
Prueba este otro código:
Private Sub Workbook_Open()
    nombrearchivo = "archivo2.xls"
    If Dir(ThisWorkbook.Path & "\" & nombrearchivo) = nombrearchivo Then
        MsgBox "Este es el punto donde se ejecuta la macro"
    Else
        MsgBox "No se ejecuta, porque no encuentra el fichero"
    End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas