hacer listado de los libros de una carpeta

01/06/2007 - 17:21 por estebanfrancom | Informe spam
Hola le agradeceria a alguien que me pueda colaborar con este
yo tengo una carpeta y de esa carpeta necesito hacer un listado de
todos los libros y de cada libro el listado de todas las hojas

gracias .

att:Esteban

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
01/06/2007 - 23:51 | Informe spam
hola, esteban !

... tengo una carpeta y de esa carpeta necesito hacer un listado de todos los libros y de cada libro el listado de todas las hojas



copia/pega las siguientes lineas en un modulo de codigo normal/general/estandar/...
el codigo borrara el contenido de la hoja activa, y volcara el resultado de libros encontrados con las hojas que contengan
asegurate de especificar la carpeta adecuada y no olvides poner al final el signo "\"

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

-> IMPORTANTE: establece primero en tu proyecto de macros VBA una referencia a la libreria...
-> Microsoft ADO Ext. x.x for DDL and Security

Dim Libro As ADOX.Catalog, Hoja As ADOX.Table, _
Ruta As String, Archivo As String, Tmp As String, _
Fila As Integer, Col As Byte
Sub Lista_de_archivos_y_hojas()
Ruta = "c:uta y sub\carpetas donde pusiste\tus libros de excel\"
Archivo = Dir(Ruta & "*.xls")
Fila = 0
Application.ScreenUpdating = False
Cells.ClearContents
Do While Archivo <> ""
Fila = Fila + 1: Col = 0
Range("a1").Offset(Fila) = Archivo
Set Libro = New ADOX.Catalog
Libro.ActiveConnection = _
"Provider=MSDASQL.1;Data Source=Excel Files;" & _
"Initial Catalog=" & Ruta & Archivo
For Each Hoja In Libro.Tables
Tmp = Application.Substitute(Hoja.Name, "'", "")
If Right(Tmp, 1) = "$" Then
Col = Col + 1
Range("a1").Offset(Fila, Col) = Left(Tmp, Len(Tmp) - 1)
End If
Next
Set Libro = Nothing
Archivo = Dir()
Loop
ActiveSheet.UsedRange.Columns.AutoFit
Range("a1") = Ruta
End Sub
Respuesta Responder a este mensaje
#2 Ivan
02/06/2007 - 00:35 | Informe spam
Dim Libro As ADOX.Catalog, Hoja As ADOX.Table, _
Ruta As String, Archivo As String, Tmp As String, _
Fila As Integer, Col As Byte

Sub Lista_de_archivos_y_hojas()
Ru



hola chicos,

disculpad la intormision, pero queria hacerle una consulta a Hector de
algo que me ha llamado la atencion: ¿el declarar las variables
'fuera'(¿a nivel de modulo?) del procedimiento es por alguna causa en
especial en este caso?


supongo que simplemente sera que sobre la marcha las has puesto y ahi
se han quedado, pero ya sabes, mi curiosidad puede mas que mi
prudencia, y, por si acaso hay algun motivo que tenga que ver con el
uso de ADO (p ej.), pues nada, a molestar

gracias por anticipado, y un saludo y hasta pronto
Ivan
Respuesta Responder a este mensaje
#3 Héctor Miguel
02/06/2007 - 00:45 | Informe spam
hola, Ivan !

Dim Libro As ADOX.Catalog, Hoja As ADOX.Table, _
Ruta As String, Archivo As String, Tmp As String, _
Fila As Integer, Col As Byte

Sub Lista_de_archivos_y_hojas()
Ru



... el declarar las variables 'fuera' (a nivel de modulo?) del procedimiento es por alguna causa en especial en este caso?
supongo que simplemente sera que sobre la marcha las has puesto y ahi se han quedado, pero ya sabes, mi curiosidad [...]



[efectivamente]... en las pruebas utilizaba dos procedimientos separados pero decidi 'presentarlos' como uno solo
por eso es que las variables [se me] quedaron 'a nivel de modulo' :))

saludos,
hector.
Respuesta Responder a este mensaje
#4 Ivan
02/06/2007 - 04:09 | Informe spam
On 2 jun, 00:45, "Héctor Miguel"
wrote:
hola, Ivan !

>> Dim Libro As ADOX.Catalog, Hoja As ADOX.Table, _
>> Ruta As String, Archivo As String, Tmp As String, _
>> Fila As Integer, Col As Byte

>> Sub Lista_de_archivos_y_hojas()
>> Ru

> ... el declarar las variables 'fuera' (a nivel de modulo?) del procedimiento es por alguna causa en especial en este caso?
> supongo que simplemente sera que sobre la marcha las has puesto y ahi se han quedado, pero ya sabes, mi curiosidad [...]

[efectivamente]... en las pruebas utilizaba dos procedimientos separados pero decidi 'presentarlos' como uno solo
por eso es que las variables [se me] quedaron 'a nivel de modulo' :))

saludos,
hector.



hola Hector,

suponia que seria algo asi, pero teniendo el tema +o- fresco del hilo
de VB y dada mi tendencia obsesiva, he preferido confirmarlo yeliminar
'otro pajaro' de mi cabeza

muchas gracias y disculpas de nuevo por la intromision

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