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

Preguntas similare

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
Respuesta Responder a este mensaje
#2 Héctor Miguel
29/01/2008 - 18:20 | Informe spam
hola, Antonio !

He intentado ejecutar tu ejemplo, pero me marca "fso As FileSystemObject" (en DIM de la segunda rutina) y me muestra el error:
"Error de compilacion: No se ha definido el tipo definido por el usuario."
Entre los puntos que me muestra la ayuda del error, esta:
"El tipo es valido, pero la biblioteca de objetos o de tipos donde se definio no esta registrada en Visual Basic."
En Menú>Herramientas>Referencias... yo tengo marcadas/activadas:
Visual Basic for aplications.
Microsoft Excel 11.0 Object Library
Ole Automation
Microsoft Office 11.0 Object Library
Si el error esta provocado por esto, Que otra referencia debo marcar?...



perdon por la omision al comentar la referencia requerida a la biblioteca necesaria :-((
-> agrega una referencia en el proyecto a la libreria Microsoft Scripting Runtime
(c:\windows\system\scrrun.dll)
(en el editor de vba ... herramientas / referencias...)

saludos,
hector.
Respuesta Responder a este mensaje
#3 rodmac
29/01/2008 - 22:16 | Informe spam
Muchas gracias Hector.

Funciona de maravilla, ya coloque el filtro que necesitaba.


saludos Rodrigo
"Я"


"Héctor Miguel" wrote:

hola, Antonio !

> He intentado ejecutar tu ejemplo, pero me marca "fso As FileSystemObject" (en DIM de la segunda rutina) y me muestra el error:
> "Error de compilacion: No se ha definido el tipo definido por el usuario."
> Entre los puntos que me muestra la ayuda del error, esta:
> "El tipo es valido, pero la biblioteca de objetos o de tipos donde se definio no esta registrada en Visual Basic."
> En Menú>Herramientas>Referencias... yo tengo marcadas/activadas:
> Visual Basic for aplications.
> Microsoft Excel 11.0 Object Library
> Ole Automation
> Microsoft Office 11.0 Object Library
> Si el error esta provocado por esto, Que otra referencia debo marcar?...

perdon por la omision al comentar la referencia requerida a la biblioteca necesaria :-((
-> agrega una referencia en el proyecto a la libreria Microsoft Scripting Runtime
(c:\windows\system\scrrun.dll)
(en el editor de vba ... herramientas / referencias...)

saludos,
hector.



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida