Buscar en Carpetas

11/08/2009 - 19:51 por Georgina | Informe spam
Hola, tengo un problema con una modulo que estoy haciendo en Excel.

Lo que requiero es que de una ruta que se le da, busque los archivos con
cierto nombre. Este es mi código:

Sub Lista_archivos_en(Carpeta As String, Completo As Boolean)

Dim Ruta As Folder, _
Subcarpeta As Folder, Archivo As file, Fila As Long, Fila2 As Long
On Error Resume Next
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

If Archivo Like ("dato*.dif") Then
Range("a" & Fila) = .Path
Fila = Fila + 1
End If

End With:
Next

Lo que le digo es que en Carpeta, que es un argumento, esta guardada la
ruta, le pido que busque dentro de toda esa ruta algun archivo que contenga
("dato*.dif).

Pero no me busca nada.

Y aveces no me dice qeu Folder no es reconocido.

Gracias.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
11/08/2009 - 21:18 | Informe spam
hola, Georgina !

es probable que tu codigo lo hubieras obtenido de alguna conversacion anterior
(p.e. de esta):-> http://tinyurl.com/mgvcft
o de esta otra:-> http://tinyurl.com/ns73lb

en la segunda conversacion, en el cuarto mensaje se agrega un detalle "perdido"...
-> agrega una referencia en el proyecto a la libreria Microsoft Scripting Runtime
(c:\windows\system\scrrun.dll)
(en el editor de vba ... herramientas / referencias...)

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

p.d. y... con un poquitin de (mas) paciencia... ;)

__ OP __
... requiero... que de una ruta que se le da, busque los archivos con cierto nombre. Este es mi codigo:

Sub Lista_archivos_en(Carpeta As String, Completo As Boolean)
Dim Ruta As Folder, _
Subcarpeta As Folder, Archivo As file, Fila As Long, Fila2 As Long
On Error Resume Next
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
If Archivo Like ("dato*.dif") Then
Range("a" & Fila) = .Path
Fila = Fila + 1
End If
End With:
Next

Lo que le digo es que en Carpeta, que es un argumento, esta guardada la ruta
le pido que busque dentro de toda esa ruta algun archivo que contenga ("dato*.dif).
Pero no me busca nada.
Y aveces no me dice qeu Folder no es reconocido.
Respuesta Responder a este mensaje
#2 Georgina
12/08/2009 - 18:30 | Informe spam
Gracias, si me sirvio mucho.

Ahora tengo otro problema, que es cuando cuando esta en el if, buscadno los
archivos con "inscripcion*.dif", dice que no encuentra ninguno.

Veo en las inspecciones mi variable y ahi estan todos los archivos. y voy
viendo que si existen pero nunca entra al If. es en la siguiente parte:

For Each Archivo In Ruta.Files
With Archivo
On Error Resume Next

If Archivo Like ("inscripcion*.dif") Then
Range("a" & Fila) = .Path
Fila = Fila + 1
End If

End With:
Next

Espero me puedas ayudar. Gracias


"Héctor Miguel" wrote:

hola, Georgina !

es probable que tu codigo lo hubieras obtenido de alguna conversacion anterior
(p.e. de esta):-> http://tinyurl.com/mgvcft
o de esta otra:-> http://tinyurl.com/ns73lb

en la segunda conversacion, en el cuarto mensaje se agrega un detalle "perdido"...
-> agrega una referencia en el proyecto a la libreria Microsoft Scripting Runtime
(c:\windows\system\scrrun.dll)
(en el editor de vba ... herramientas / referencias...)

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

p.d. y... con un poquitin de (mas) paciencia... ;)

__ OP __
> ... requiero... que de una ruta que se le da, busque los archivos con cierto nombre. Este es mi codigo:
>
> Sub Lista_archivos_en(Carpeta As String, Completo As Boolean)
> Dim Ruta As Folder, _
> Subcarpeta As Folder, Archivo As file, Fila As Long, Fila2 As Long
> On Error Resume Next
> 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
> If Archivo Like ("dato*.dif") Then
> Range("a" & Fila) = .Path
> Fila = Fila + 1
> End If
> End With:
> Next
>
> Lo que le digo es que en Carpeta, que es un argumento, esta guardada la ruta
> le pido que busque dentro de toda esa ruta algun archivo que contenga ("dato*.dif).
> Pero no me busca nada.
> Y aveces no me dice qeu Folder no es reconocido.



Respuesta Responder a este mensaje
#3 Héctor Miguel
12/08/2009 - 21:09 | Informe spam
hola, Georgina !

Ahora tengo otro problema, que es cuando cuando esta en el if, buscadno los archivos con "inscripcion*.dif", dice que no encuentra ninguno.
Veo en las inspecciones mi variable y ahi estan todos los archivos. y voy viendo que si existen pero nunca entra al If. es en la siguiente parte:
For Each Archivo In Ruta.Files
With Archivo
On Error Resume Next
If Archivo Like ("inscripcion*.dif") Then
Range("a" & Fila) = .Path
Fila = Fila + 1
End If
End With:
Next



lo que buscas es algo +/- como lo siguiente (modifica las variables en el primer procedimiento
(y esta forma no requiere de las referencias a la libreria de los scripting.runtime)

saludos,
hector.

Sub LIsta_de_archivos()
Application.ScreenUpdating = False
Dim Carpeta As String, Tipo As String, Patron As String
Carpeta = "c:uta y sub\carpetas donde estan\tus archivos" ' <= MODIFICA
Tipo = ".dif"
Patron = "inscripcion"
Listar_archivos_en Carpeta, Tipo, Patron, True
End Sub

Sub Listar_archivos_en(ByVal _
Carpeta As String, Tipo As String, Patron As String, Completo As Boolean)
Dim Archivo, SubCarpeta, Fila As Long
Fila = Range("a65536").End(xlUp).Row + 1
With CreateObject("scripting.filesystemobject")
With .GetFolder(Carpeta)
For Each Archivo In .Files
With Archivo
If InStr(1, .Name, Tipo, 1) Then
If InStr(1, .Name, Patron, 1) Then
Range("a" & Fila) = .Path
Fila = Fila + 1
End If
End If
End With
Next
If Completo Then
For Each SubCarpeta In .SubFolders
Listar_archivos_en SubCarpeta, Tipo, Patron, True
Next
End If
End With
End With
End Sub
Respuesta Responder a este mensaje
#4 Georgina
13/08/2009 - 17:15 | Informe spam
Hola, ya encontre mi error, jajaja, era algo muy obvio, es qeu me faltaba un
asterisco antes de la palabra.

Gracias de todas formas.

Bye y hasta la proxima :)

"Héctor Miguel" wrote:

hola, Georgina !

> Ahora tengo otro problema, que es cuando cuando esta en el if, buscadno los archivos con "inscripcion*.dif", dice que no encuentra ninguno.
> Veo en las inspecciones mi variable y ahi estan todos los archivos. y voy viendo que si existen pero nunca entra al If. es en la siguiente parte:
> For Each Archivo In Ruta.Files
> With Archivo
> On Error Resume Next
> If Archivo Like ("inscripcion*.dif") Then
> Range("a" & Fila) = .Path
> Fila = Fila + 1
> End If
> End With:
> Next

lo que buscas es algo +/- como lo siguiente (modifica las variables en el primer procedimiento
(y esta forma no requiere de las referencias a la libreria de los scripting.runtime)

saludos,
hector.

Sub LIsta_de_archivos()
Application.ScreenUpdating = False
Dim Carpeta As String, Tipo As String, Patron As String
Carpeta = "c:uta y sub\carpetas donde estan\tus archivos" ' <= MODIFICA
Tipo = ".dif"
Patron = "inscripcion"
Listar_archivos_en Carpeta, Tipo, Patron, True
End Sub

Sub Listar_archivos_en(ByVal _
Carpeta As String, Tipo As String, Patron As String, Completo As Boolean)
Dim Archivo, SubCarpeta, Fila As Long
Fila = Range("a65536").End(xlUp).Row + 1
With CreateObject("scripting.filesystemobject")
With .GetFolder(Carpeta)
For Each Archivo In .Files
With Archivo
If InStr(1, .Name, Tipo, 1) Then
If InStr(1, .Name, Patron, 1) Then
Range("a" & Fila) = .Path
Fila = Fila + 1
End If
End If
End With
Next
If Completo Then
For Each SubCarpeta In .SubFolders
Listar_archivos_en SubCarpeta, Tipo, Patron, True
Next
End If
End With
End With
End Sub



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