Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Equivalencia del filesearch en excel 2007

747 views
Skip to first unread message

rodmac

unread,
Jan 28, 2008, 11:46:02 AM1/28/08
to
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

Héctor Miguel

unread,
Jan 28, 2008, 7:49:08 PM1/28/08
to
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 __

AnSanVal

unread,
Jan 29, 2008, 8:51:15 AM1/29/08
to
Hola Héctor.
 
He intentado ejecutar tu ejemplo, pero me marca "fso As FileSystemObject" (en DIM de la segunda rutina) y me muestra el error:
"Error de compilación:
No se ha definido el tipo definido por el usuario."
 
Entre los puntos que me muestra la ayuda del error, está:
"El tipo es válido, pero la biblioteca de objetos o de tipos donde se definió no está 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 está provocado por esto, ¿Que otra referencia debo marcar?.
 
Tengo Windows XP Home y Office 2003.
 
Gracias y un saludo: Antonio.
**********************************************
"Héctor Miguel" <NOhemio...@PLShotmail.com> escribió en el mensaje news:uY5sCDhY...@TK2MSFTNGP05.phx.gbl...

Héctor Miguel

unread,
Jan 29, 2008, 12:20:46 PM1/29/08
to
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.


AnSanVal

unread,
Jan 29, 2008, 2:45:09 PM1/29/08
to
¡No hay nada que perdonar!. Seguro que mis omisiones ganan a las tuyas, a pesar de que mi número de mensajes es inferior.
 
Muchas gracias. Ahora mismo voy a probarlo.
 
Un saludo desde Tenerife.
**********************************
"Héctor Miguel" <NOhemio...@PLShotmail.com> escribió en el mensaje news:eFFmOtpY...@TK2MSFTNGP03.phx.gbl...
hola, Antonio !

rodmac

unread,
Jan 29, 2008, 4:16:00 PM1/29/08
to
Muchas gracias Hector.

Funciona de maravilla, ya coloque el filtro que necesitaba.


saludos Rodrigo
"Яodm@cMX"

0 new messages