You are on page 1of 3

Objeto FileSearch de vba para buscar facilmente archivos de Office y otros tipos en un directorio especfico

Se crear un formulario en Excel que listar los archivos de Office ( cualquier tipo: word, excel etc.. ) en un control ListBox 1 - Abrir un nuevo libro de Excel 2 - Agregar en la hoja un Control Commandbutton ( desde el cuadro de controles - men ver - barra de herramientas )

3 - Abrir el Visual basic Editor desde el men herramientas y agregar un UserForm 4 - Al userForm aadir los siguientes controles : ( un textbox1, un Listbox1 y un Commandbutton1 )

Hacer doble clic sobre un rea vaca del userform para escribir el cdigo de bsqueda Cdigo fuente
Option Explicit ' Botn para comenzar a buscar ''''''''''''''''''''''''''''''''''''''''''''' Private Sub CommandButton1_Click() If TextBox1.Text <> "" Then If Len(Dir(Trim(TextBox1.Text))) Then ' Buscar todos los archivos de Office Call Buscar(TextBox1.Text, msoFileTypeOfficeFiles) Else MsgBox "El directorio no es correcto", vbExclamation, "error" End If Else MsgBox "Debe ingresar un directorio en el textbox", vbExclamation End If End Sub

' funcin para buscar los documentos de Office '''''''''''''''''''''''''''''''''''''''''''''''''''''''' Sub Buscar( _ Path As String, _ Tipo As MsoFileType) On Error GoTo ErrorSub Dim i As Long With Application ' desactualiza la actualizacin para que sea mas rpido .ScreenUpdating = False .DisplayAlerts = False .EnableEvents = False End With ' propiedades del objeto FileSearch With Application.FileSearch ' nueva bsqueda .NewSearch ' path inicial de bsqueda .LookIn = Path ' el tipo de documento Office, word, otros : _ ver el valor de las constantes .FileType = Tipo '.SearchSubFolders ' para buscar en sub carpetas _ en este caso solo busca en un solo nivel ListBox1.Clear ' ejecuta la bsqueda If .Execute > 0 Then ' recorre la coleccin de archivos ( si es que hay ) For i = 1 To .FoundFiles.Count ' cantidad de archivos ListBox1.AddItem .FoundFiles(i) Next End If End With ' vuelve a habilitar la actualizacin del Excel With Application .ScreenUpdating = True .DisplayAlerts = True .EnableEvents = True End With ' error Exit Sub ErrorSub: MsgBox Err.Description, vbCritical, "error: " & Err.Number End Sub

Por ltimo, desde el editor de vba, hacer doble clic en la hoja1 para abrir el mdulo:

Colocar el siguiente cdigo para el commandbutton , y poder abrir el userform desde la hoja1
Private Sub CommandButton1_Click() UserForm1.Show End Sub

Descargar ejemplo C:\JOAN\DESCARGAS FIREFOX\vba-buscar-archivos-filesearch.rar Nota: la funcin solo busca en un solo nivel de directorios. Para indicar todos los niveles, establecer el valor: true en la propiedad searchSubFolders. Application.FileSearch.SearchSubFolders =True Tambin , en el ejemplo se realiza la bsqueda de cualquier documento de office. Para poder diferencia el tipo de archivo, indicarlo mediante las siguientes constantes en la propiedad FileType:

msoFileTypeAllFiles : cualquier tipo msoFileTypeDatabases : de base de datos msoFileTypeExcelWorkbooks ; Libros de Excel msoFileTypePowerPointPresentations : de PowerPoint msoFileTypeWordDocuments : Documentos de Word msoFileTypeTemplates : plantillas msoFileTypeOfficeFiles : cualquier documento de Office

Para buscar un archivo especfico, indicar en la propiedad FileName, el nombre del fichero , antes de llamar al mtodo Execute que es el comienza a buscar Application.FileSearch.Filename = "c:\unArchivo.xls"

You might also like