Inicio > Microsoft Excel > cadipas > (VBA) Ejecuta macro si encuentra archivo

(VBA) Ejecuta macro si encuentra archivo

Experto:
Usuario:
Fecha: 16/06/2009
Valoración: (5,00 sobre 5) Categoría: Microsoft Excel
15/06/2009
pagafantas, usuario preguntando en Microsoft Excel
Usuario
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
15/06/2009
pagafantas, experto respondiendo en Microsoft Excel
Experto
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
Saludos de un compatriota
<span style="white-space: pre;"> </span>
15/06/2009
pagafantas, usuario preguntando en Microsoft Excel
Usuario
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 pidiendome la ruta para especificar donde se encuentra.
En ese caso se lia 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
15/06/2009
pagafantas, experto respondiendo en Microsoft Excel
Experto
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 simplmente 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.
¿Que versión de excel tienes instalada?
16/06/2009
pagafantas, usuario preguntando en Microsoft Excel
Usuario
Hola master !
he hecho pruebas cambiandole 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
16/06/2009
pagafantas, experto respondiendo en Microsoft Excel
Experto
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
Espero haber acertado con las condiciones.
Recuerda cuando termines, cerrar y valorar la pregunta.
Gracias
16/06/2009
pagafantas, usuario preguntando en Microsoft Excel
Usuario
Perfecto !  un 10 !
Enlaces patrocinados