Título: Visual Basic For Application. Objeto "Application.FileSearch" en Office 2007/10 Publicado por: Aberroncho en 25 Octubre 2011, 22:37 pm Tengo unas bases de datos de Access con macros en Visual Basic for Application hechas en la versión 2003 de Access. Ahora me he puesto a migrarlas a Access 2010 y me he encontrado con una sorpresa: El objeto "Application.FileSearch" dejó de implementarse en VBA a partir de la versión 2007 de Office.
Para los que no sepáis que hace el objeto, a grandes trazos es un objeto que permite configurar una serie de filtros para buscar ficheros, ejecuta la búsqueda y devuelve la lista de ficheros que cumplen con los criterios elegidos. Puedes, por ejemplo, pedirle la lista de ficheros "*.zip" que están en el directorio "C:\Temp" y que lo haga de forma recursiva buscando por los subdirectorios. Después de mucho mirar por la ayuda y consultar al gran oráculo Google, descubrí que no sólo ha dejado de implementarse "Application.FileSearch", además su funcionalidad no ha sido sustituida por ningún otro objeto. Si quieres hacerlo tienes que implementarte a mano tu búsqueda de ficheros. Entre los resultados de Google estaba el código de varios procedimientos para hacer lo mismo, incluido el que Microsoft proporciona en su web de soporte. Después de revisarlos todos y probar alguno, decidí implementar mi propio objeto FileSearch basándome en el procedimiento FileSearch que había implementado un tal Havrda y que yo encontré en http://www.pcreview.co.uk/forums/application-filesearch-error-t3743946p2.html A continuación os pongo el objeto que he implementado por si alguno os encontráis con este problema en el futuro. La ventaja que tiene este objeto es que tiene un funcionamiento parecido al que tenía "Application.FileSearch" por lo que los cambios en vuestras macros serán menores que si intentáis adaptar un procedimiento de los muchos que encontraréis por Internet. classError.cls Objeto que agrupa el código de error y los mensajes que se producen dentro del objeto classFileSearch. Código
classFileSearch.cls Objeto que realiza la búsqueda de los ficheros. La lista de ficheros encontrados es una colección de objetos "FILE". Código
Procedimiento de prueba (.bas) Esta es una pequeña función que lo único que hace es instanciar un objeto de la clase classFileSearch, lanzar una búsqueda y mostrar el resultado por la ventana de inspección. Código
El código está probado y funciona. No implementa la funcionalidad completa de "Application.FileSearch" pero cubre lo más básico. Supongo que viendo el código ya os habréis dado cuenta que el Visual Basic no es mi especialidad así que comentarios, sugerencias, críticas constructivas y mejoras serán bienvenidas ;) Título: Re: Visual Basic For Application. Objeto "Application.FileSearch" en Office 2007/10 Publicado por: x64core en 25 Octubre 2011, 22:58 pm ;D esta bien pero porque se escribe "Option Compare Database"
el codigo me funka si la linea no esta :P quiza sera porque mencionas que trabajas con base de datos y eso :P yo la verdad no se casi nada de base de datos y esas cosas :P y pues mejor usaria APIs que un Objeto las cadena de comprobacion vacia ( "" ) es mejor Vbnullstrings :P ;D Título: Re: Visual Basic For Application. Objeto "Application.FileSearch" en Office 2007/10 Publicado por: raul338 en 25 Octubre 2011, 23:43 pm Nunca programe profundamente en VBA. Pero es bueno saberlo :) y si la clase funciona, a la biblioteca :D
Esta prolijo y entendible el codigo ;) También puedes usar la Clase para Buscar de LeandroA (http://leandroascierto.com/blog/clase-para-buscar/) que incluye comodines "?" y "*" :) Título: Re: Visual Basic For Application. Objeto "Application.FileSearch" en Office 2007/10 Publicado por: Aberroncho en 26 Octubre 2011, 20:00 pm ;D esta bien pero porque se escribe "Option Compare Database" "Option Compare" determina el modo en que se compararán las cadenas de texto. En VBA para Access tiene tres valores posibles:
|