ayuda con macro

27/02/2007 - 20:29 por IGGV | Informe spam
Hola a todos:
De una revista saque una macro cuyo codigo transcribo mas abajo. Esta
me permite listar en una planilla todos los archivos de un directorio
predeterminado, en este caso todo lo que cuelga de C:\ . Lo que me
gustaria poder hacer es que al ejecutar la macro me permita elegir el
directorio a listar.
Desde ya muchas gracias

Sub Archivos()
ruta = "C:\*.*"
nombre = Dir(ruta)
i = 1
Do While nombre <> ""
Cells(i, 1) = nombre
i = i + 1
nombre = Dir
Loop
End Sub

Preguntas similare

Leer las respuestas

#6 Héctor Miguel
07/03/2007 - 09:54 | Informe spam
hola, Ignacio !

... ahora una... variante
Este codigo me lista archivos, pero no me lista los sub directorios, que habria que agregarle?



esta 'variante' podria tener dos [o mas] sub-variantes :)) [p.e.]
-> si necesitar 'bajar' a sub-carpetas de los siguientes 'niveles' o sea, buscar en sub-sub-sub-[...]directorios -?-
es necesario hacer 'recursivo' el procedimiento que busca las sub-carpetas [ya comentaras si es necesario] -?-

el siguiente ejemplo 'asume' que:
a) pones el directorio 'maestro' en la celda 'B1' [p.e. c:\mis documentos]
b) pones algun 'filtro' en la celda 'A1' [p.e. *.xls]
c) te interese listar SOLO los archivos del directorio 'maestro' y los de carpetas que 'cuelgan' en directo [primer sub-nivel]
-> el listado se empieza a llenar a partir de la fila 3 en la columna 1 [A]... y NO tiene una 'limpieza previa' [OJO]

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

Dim Fila As Long, Ruta As String, Archivo As String
Sub Proceso()
Ruta = Range("b1")
If Right(Ruta, 1) <> "\" Then Ruta = Ruta & "\"
Fila = 3
Lista_archivos
Lista_carpetas
End Sub
Sub Lista_archivos(Optional ByVal Base As String = "")
If Base <> "" And Right(Base, 1) <> "\" Then Base = Base & "\"
Archivo = Dir(Ruta & Base & Range("a1"))
Do While Archivo <> ""
Cells(Fila, 1) = Base & Archivo
Fila = Fila + 1
Archivo = Dir
Loop
End Sub
Private Sub Lista_carpetas()
Dim Sub_Dir As Object
With CreateObject("Scripting.FileSystemObject")
With .GetFolder(Ruta)
For Each Sub_Dir In .SubFolders
Lista_archivos Sub_Dir.Name
Next
End With
End With
End Sub
Respuesta Responder a este mensaje
#7 IGGV
09/03/2007 - 04:13 | Informe spam
UUAAAUUUU!!!
Por ahora solo que liste los archivos y los subdirectorios del "Primer
nivel"que cuelgan deL "directorio principal", despues si hay que
listar lo que hay dentro de cada uno de los secundarios, se busca uno
por uno.
Hoy lo pruebo y te cuento!!!
Desde ya muchas gracias




On 7 mar, 05:54, "Héctor Miguel"
wrote:
hola, Ignacio !

> ... ahora una... variante
> Este codigo me lista archivos, pero no me lista los sub directorios, que habria que agregarle?

esta 'variante' podria tener dos [o mas] sub-variantes :)) [p.e.]
-> si necesitar 'bajar' a sub-carpetas de los siguientes 'niveles' o sea, buscar en sub-sub-sub-[...]directorios -?-
es necesario hacer 'recursivo' el procedimiento que busca las sub-carpetas [ya comentaras si es necesario] -?-

el siguiente ejemplo 'asume' que:
a) pones el directorio 'maestro' en la celda 'B1' [p.e. c:\mis documentos]
b) pones algun 'filtro' en la celda 'A1' [p.e. *.xls]
c) te interese listar SOLO los archivos del directorio 'maestro' y los de carpetas que 'cuelgan' en directo [primer sub-nivel]
-> el listado se empieza a llenar a partir de la fila 3 en la columna 1 [A]... y NO tiene una 'limpieza previa' [OJO]

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

Dim Fila As Long, Ruta As String, Archivo As String
Sub Proceso()
Ruta = Range("b1")
If Right(Ruta, 1) <> "\" Then Ruta = Ruta & "\"
Fila = 3
Lista_archivos
Lista_carpetas
End Sub
Sub Lista_archivos(Optional ByVal Base As String = "")
If Base <> "" And Right(Base, 1) <> "\" Then Base = Base & "\"
Archivo = Dir(Ruta & Base & Range("a1"))
Do While Archivo <> ""
Cells(Fila, 1) = Base & Archivo
Fila = Fila + 1
Archivo = Dir
Loop
End Sub
Private Sub Lista_carpetas()
Dim Sub_Dir As Object
With CreateObject("Scripting.FileSystemObject")
With .GetFolder(Ruta)
For Each Sub_Dir In .SubFolders
Lista_archivos Sub_Dir.Name
Next
End With
End With
End Sub
Respuesta Responder a este mensaje
#8 IGGV
09/03/2007 - 21:00 | Informe spam
Me da error en esta linea:

With .GetFolder(Ruta)


On 9 mar, 00:13, "IGGV" wrote:
UUAAAUUUU!!!
Por ahora solo que liste los archivos y los subdirectorios del "Primer
nivel"que cuelgan deL "directorio principal", despues si hay que
listar lo que hay dentro de cada uno de los secundarios, se busca uno
por uno.
Hoy lo pruebo y te cuento!!!
Desde ya muchas gracias

On 7 mar, 05:54, "Héctor Miguel"
wrote:



> hola, Ignacio !

> > ... ahora una... variante
> > Este codigo me lista archivos, pero no me lista los sub directorios, que habria que agregarle?

> esta 'variante' podria tener dos [o mas] sub-variantes :)) [p.e.]
> -> si necesitar 'bajar' a sub-carpetas de los siguientes 'niveles' o sea, buscar en sub-sub-sub-[...]directorios -?-
> es necesario hacer 'recursivo' el procedimiento que busca las sub-carpetas [ya comentaras si es necesario] -?-

> el siguiente ejemplo 'asume' que:
> a) pones el directorio 'maestro' en la celda 'B1' [p.e. c:\mis documentos]
> b) pones algun 'filtro' en la celda 'A1' [p.e. *.xls]
> c) te interese listar SOLO los archivos del directorio 'maestro' y los de carpetas que 'cuelgan' en directo [primer sub-nivel]
> -> el listado se empieza a llenar a partir de la fila 3 en la columna 1 [A]... y NO tiene una 'limpieza previa' [OJO]

> si cualquier duda [o informacion adicional]... comentas ?
> saludos,
> hector.

> Dim Fila As Long, Ruta As String, Archivo As String
> Sub Proceso()
> Ruta = Range("b1")
> If Right(Ruta, 1) <> "\" Then Ruta = Ruta & "\"
> Fila = 3
> Lista_archivos
> Lista_carpetas
> End Sub
> Sub Lista_archivos(Optional ByVal Base As String = "")
> If Base <> "" And Right(Base, 1) <> "\" Then Base = Base & "\"
> Archivo = Dir(Ruta & Base & Range("a1"))
> Do While Archivo <> ""
> Cells(Fila, 1) = Base & Archivo
> Fila = Fila + 1
> Archivo = Dir
> Loop
> End Sub
> Private Sub Lista_carpetas()
> Dim Sub_Dir As Object
> With CreateObject("Scripting.FileSystemObject")
> With .GetFolder(Ruta)
> For Each Sub_Dir In .SubFolders
> Lista_archivos Sub_Dir.Name
> Next
> End With
> End With
> End Sub- Ocultar texto de la cita -

- Mostrar texto de la cita -
Respuesta Responder a este mensaje
#9 Héctor Miguel
10/03/2007 - 04:01 | Informe spam
hola, Ignacio !

Me da error en esta linea:
With .GetFolder(Ruta)



lo unico que se me ocurre, es que no este instalada la libreria para scriptings de windows
[aunque no es necesario establecerle referencias por 'la forma' de hacerle llamados con el 'CreateObject']

1) verifica si podrias establecer una referencia en tu proyecto de macros a la libreria:
Microsoft Scripting RunTime [menu: herramientas / referencias] desde el editor de vba
[en caso de que no sea posible]...

2) 'comprueba' si esta instalada la libreria que debiera encontrarse en el directorio:
c:\windows\system[32]\SCRRUN.DLL

si cualquier duda... comentas ?
saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida