Saltar al contenido

Comprobar la existencia de un archivo

publicado

Hola compañeros, aquí publico un aporte mínimo pero de gran utilidad.

Puede ser común que mandemos a VBA a buscar un archivo en una ruta especificada. Esto puede funcionar muy bien hasta que el archivo cambie de nombre o de ubicación... en otras palabras "desaparezca".

¿No resulta molesto que cada vez que esto ocurre, nos encontramos con un código de error y un mensaje indescifrable de Excel-VBA?

Bueno, el objetivo de ésta función que aquí comparto es evitarnos el error de código. ¿Cómo? Bueno, verificando la existencia del archivo ANTES de mandar a abrirlo por código.

Como adicional, también funciona como función definida por el usuario, por lo que también se puede usar directamente en Excel, como parte de una fórmula =SI()!

El archivo que comparto es un módulo .BAS y para incluirlo en nuestro proyecto VBA, lo más fácil es arrastrarlo a la ventana del proyecto. La opción es hacer como muestra la imagen:

[ATTACH]30705.vB[/ATTACH]

Cómo se puede usar:

1º) En una MACRO (VBA):

Sub prueba()If ManejoArchivos.ArchivoExiste("C:\WINDOWS\system32\clipbrd.exe", True) Then
MsgBox "Si, existe!"
End If
End Sub[/CODE]

2º) En una celda Excel:

[CODE]=ArchivoExiste("C:\WINDOWS\system32\clipbrd.exe"; VERDADERO)
=SI(ArchivoExiste("C:\WINDOWS\system32\clipbrd.exe"; FALSO);"TODO BIEN";"NO!")[/CODE]

Espero comentarios y propuestas!

[b][EDIT][/b] Haciendo caso a la recomendación de Gerson, ahora en el comprimido hay un ejemplo XLS en formato 2003.

post-98571-145877004858_thumb.jpg

ManejoArchivos.rar

Featured Replies

publicado
  • Autor
Hola Pablo

Gracias por el aporte, pero te sugiero adjuntes un archivo Excel, para que los usuarios puedan hacer pruebas

Gracias Gerson por el consejo, ya lo agregué.

publicado

Genial aporte Manfred, gracias por compartirlo, de gran utilidad.

En algunas ocasiones ha sido de ayuda para mi usar la función vba.dir(). Por ejemplo, algo como:

if cbool(len(dir(strRutaArchivo))) then ... 

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.