Equivalencia del filesearch en excel 2007

28/01/2008 - 17:46 por rodmac | Informe spam
Hola

Debido a que en excel 2007 la funcion "filesearch" no exite es necesario la
implementacion de un nuevo codigo. Encontre este codigo en la red para
realizar este tipo de busqueda, pero me hace falta la busqueda de archivos en
las subcarpetas que pueda contener la carpeta principal, les anexo una parte
de ese codigo

Set FSO = CreateObject("Scripting.FileSystemObject")

Set this = ActiveWorkbook
sFolder = ActiveSheet.Parent.Path

If sFolder <> "" Then
Set Folder = FSO.GetFolder(sFolder)

For Each file In Folder.Files

nombre = file.Path

If nombre Like "*.dif" Then
ActiveSheet.Range("G5") = file
Range("G5").Select
Selection.Copy

Range("F12").Select
Selection.Insert Shift:=xlDown
Range("G5").Select

MsgBox Prompt:="SE ACTUALIZO TABLA " & nombre

Else

MsgBox Prompt:="archivo no valido " & nombre

End If
Next file

El codigo funciona correctamente. Solo necesito saber como realizar las
busquedas y desplegar los archivos en la celda f12 que cumplan con el
criterio establecido dentro de las subcarpetas


Saludos y muchas gracias
 

Leer las respuestas

#1 Héctor Miguel
29/01/2008 - 01:49 | Informe spam
hola, (...) ???

Debido a que en excel 2007 la funcion "filesearch" no exite es necesario la implementacion de un nuevo codigo.
Encontre este codigo en la red para realizar este tipo de busqueda, pero me hace falta la busqueda de archivos
en las subcarpetas que pueda contener la carpeta principal, les anexo una parte de ese codigo (...)
... como realizar las busquedas y desplegar los archivos en la celda f12 que cumplan con el criterio establecido dentro de las subcarpetas



el siguiente es un ejemplo para continuar busquedas de archivos en (sub)carpetas
pones la unidad logica/raiz/... o ruta "de partida" (p.e. d:\ o c:\mis documentos) -> en la celda 'A1'
copias/pegas las siguientes lineas en un modulo de codigo general... y la ejecutas
(OJO: no le inclui los "filtros" que solicitas, pero espero te sera facil adaptar esa parte en el ejemplo)

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

Sub Lista_de_archivos()
Application.ScreenUpdating = False
Range("a3") = "Archivos:"
Lista_archivos_en Range("a1"), True
End Sub
Sub Lista_archivos_en(Carpeta As String, Completo As Boolean)
Dim fso As FileSystemObject, Ruta As Folder, _
SubCarpeta As Folder, Archivo As File, Fila As Long
Set fso = New Scripting.FileSystemObject
Set Ruta = fso.GetFolder(Carpeta)
Fila = Range("a65536").End(xlUp).Row + 1
For Each Archivo In Ruta.Files
With Archivo
On Error Resume Next
Range("a" & Fila) = .Path
End With: Fila = Fila + 1
Next
If Completo Then
For Each SubCarpeta In Ruta.SubFolders
Lista_archivos_en SubCarpeta.Path, True
Next
End If: Columns("a:a").AutoFit
Set Ruta = Nothing: Set fso = Nothing
End Sub

__ el codigo expuesto __
Set FSO = CreateObject("Scripting.FileSystemObject")
Set this = ActiveWorkbook
sFolder = ActiveSheet.Parent.Path
If sFolder <> "" Then
Set Folder = FSO.GetFolder(sFolder)
For Each file In Folder.Files
nombre = file.Path
If nombre Like "*.dif" Then
ActiveSheet.Range("G5") = file
Range("G5").Select
Selection.Copy
Range("F12").Select
Selection.Insert Shift:=xlDown
Range("G5").Select
MsgBox Prompt:="SE ACTUALIZO TABLA " & nombre
Else
MsgBox Prompt:="archivo no valido " & nombre
End If
Next file

Preguntas similares