abrir los archivos de una lista

20/09/2007 - 22:42 por Rudolph | Informe spam
buenas tardes!

tengo una libro con la lista de archivos de excel que estan en un directorio
determinado.

puedo hacer una macro que lea la lista y abra los archivos una a uno?
Rodolfo Rangel
Corpivensa
S.G.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
21/09/2007 - 01:43 | Informe spam
hola, Rodolfo !

tengo una libro con la lista de archivos de excel que estan en un directorio determinado.
puedo hacer una macro que lea la lista y abra los archivos una a uno?



puedes hacer un ciclo For...Next y que en cada avance del contador [fila o variable] se abra un archivo [p.e.]

Dim Ruta As String, Celda As Range
Ruta = "c:uta y sub\carpetas a\los archivos\"
For Each Celda In Range("a2:a5")
Workbooks.Open Ruta & Celda & ".xls"
' aqui realizas tus acciones y cierras cada libro ... '
Next

o si prefieres un avance por lineas...

Dim Ruta As String, Fila As Integer
Ruta = "c:uta y sub\carpetas a\los archivos\"
For Fila = 2 To 5
Workbooks.Open Ruta & Range("b" & Fila) & ".xls"
' aqui realizas tus acciones y cierras cada libro ... '
Next

saludos,
hector.

p.d. la otra macro que expusiste en tu consulta anterior [la *kilometrica*]...
estoy viendo la forma de *adelgazarla*, pero me serviria que indiques en donde estara el listado de archivos
el nombre de la hoja y si los nombres en dicho listado contendran la EXTension .xls -?-
Respuesta Responder a este mensaje
#2 Rudolph
21/09/2007 - 14:28 | Informe spam
buenos dias hector!!!

gracias por tu atencion

la lista de empresas esta en el libro donde estara la macro que se llema
consolidado en una hoja que se llama ubicacion.

gracias

Rodolfo Rangel
Corpivensa
S.G.


"Héctor Miguel" wrote:

hola, Rodolfo !

> tengo una libro con la lista de archivos de excel que estan en un directorio determinado.
> puedo hacer una macro que lea la lista y abra los archivos una a uno?

puedes hacer un ciclo For...Next y que en cada avance del contador [fila o variable] se abra un archivo [p.e.]

Dim Ruta As String, Celda As Range
Ruta = "c:uta y sub\carpetas a\los archivos\"
For Each Celda In Range("a2:a5")
Workbooks.Open Ruta & Celda & ".xls"
' aqui realizas tus acciones y cierras cada libro ... '
Next

o si prefieres un avance por lineas...

Dim Ruta As String, Fila As Integer
Ruta = "c:uta y sub\carpetas a\los archivos\"
For Fila = 2 To 5
Workbooks.Open Ruta & Range("b" & Fila) & ".xls"
' aqui realizas tus acciones y cierras cada libro ... '
Next

saludos,
hector.

p.d. la otra macro que expusiste en tu consulta anterior [la *kilometrica*]...
estoy viendo la forma de *adelgazarla*, pero me serviria que indiques en donde estara el listado de archivos
el nombre de la hoja y si los nombres en dicho listado contendran la EXTension .xls -?-



Respuesta Responder a este mensaje
#3 Héctor Miguel
21/09/2007 - 21:58 | Informe spam
hola, Rodolfo !

la lista de empresas esta en el libro donde estara la macro que se llema consolidado en una hoja que se llama ubicacion...



despues de haberme *acabado las pesta#as* revisando la *kilometrica* macro de tu consulta anterior [~ 550 lineas de codigo]
te paso una [revision de] macro *aligerada* a +/- 60 lineas de codigo... NO *probadas* [obviamente no tengo los elementos] :)
es [lo que se dice]... puro *hard coded* y hay algunas situaciones que estoy *suponiendo* [p.e.]

1) la hoja en el libro "consolidado" donde recibes los datos de cada libro se llama "hoja de consolidacion" [linea 8]
2) el rango donde tienes el listado con los nombres de los archivos en la hoja "ubicacion" es 'A2:A5' [linea 5]
3) *el resto* solo ha sido un *vaciado* [+/- ordenado] de los rangos y *movimientos* de tu codigo original :D

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

la macro es la siguiente [OJO si hay *saltos de linea* -adicionales- por el lector de mensajes]:

Sub Consolida_Libros()
Dim Celda As Range, Fila As Integer, Ruta As String
Application.ScreenUpdating = False
Fila = 2
Ruta = "c:\documents and settings\jnieves\escritorio\angel\"
For Each Celda In ThisWorkbook.Worksheets("ubicacion").Range("a2:a5")
Fila = Fila + 1
Workbooks.Open Ruta & Celda & ".xls"
With ThisWorkbook.Worksheets("hoja de consolidacion")
.Range("a" & Fila).Resize(, 14) = _
ActiveWorkbook.Worksheets("ideloc").Range( _
Array([c6].Value, [c7].Value, [a9].Value, [c9].Value, [e9].Value, [g9].Value, [i9].Value, _
[a13].Value, [b13].Value, [c13].Value, [e13].Value, [g13].Value, [i13].Value, [c29].Value))
.Range("o" & Fila).Resize(, 47) = _
ActiveWorkbook.Worksheets("varsoci").Range( _
Array([a8].Value, [c8].Value, [e8].Value, [g8].Value, [i8].Value, [a12].Value, [b12].Value, _
[c12].Value, [d12].Value, [e12].Value, [f12].Value, [g12].Value, [h11].Value, [j11].Value, _
[h12].Value, [j12].Value, [h13].Value, [j13].Value, [c15].Value, [e15].Value, [g15].Value, _
[i15].Value, [c17].Value, [e17].Value, [g17].Value, [i17].Value, [a20].Value, [c20].Value, _
[e20].Value, [g20].Value, [i20].Value, [a24].Value, [c24].Value, [e24].Value, [f24].Value, _
[h24].Value, [j24].Value, [a27].Value, [c27].Value, [e27].Value, [f27].Value, [h27].Value, _
[j27].Value, [a30].Value, [c30].Value, [e30].Value, [f29].Value))
.Range("bj" & Fila).Resize(, 28) = _
ActiveWorkbook.Worksheets("varsocii").Range( _
Array([b8].Value, [b11].Value, [b14].Value, [b17].Value, [b20].Value, [b23].Value, [b26].Value, _
[b29].Value, [e8].Value, [e11].Value, [e14].Value, [e17].Value, [e20].Value, [e23].Value, _
[e26].Value, [h8].Value, [h11].Value, [h14].Value, [h17].Value, [h20].Value, [h23].Value, _
[h26].Value, [g28].Value, [a33].Value, [c33].Value, [e33].Value, [g33].Value, [i33].Value))
.Range("cl" & Fila).Resize(, 47) = _
ActiveWorkbook.Worksheets("varsociii").Range( _
Array([d8].Value, [d9].Value, [d10].Value, [d11].Value, [d12].Value, [h8].Value, [h9].Value, _
[h10].Value, [h11].Value, [h12].Value, [l8].Value, [l9].Value, [l10].Value, [l11].Value, _
[l12].Value, [d14].Value, [d15].Value, [d16].Value, [d17].Value, [d18].Value, [h14].Value, _
[h16].Value, [h18].Value, [l14].Value, [l16].Value, [l18].Value, [c21].Value, [c22].Value, _
[c23].Value, [g21].Value, [g22].Value, [g23].Value, [i22].Value, [j22].Value, [d26].Value, _
[d27].Value, [d28].Value, [h26].Value, [h27].Value, [h28].Value, [h29].Value, [i27].Value, _
[j27].Value, [i29].Value, [j29].Value, [i31].Value, [j31].Value))
.Range("eg" & Fila).Resize(, 63) = _
ActiveWorkbook.Worksheets("viaacteco").Range( _
Array([c7].Value, [c8].Value, [c9].Value, [c10].Value, [c11].Value, [c12].Value, [c13].Value, _
[f7].Value, [f8].Value, [f9].Value, [f10].Value, [f11].Value, [f12].Value, [f13].Value, _
[i7].Value, [i8].Value, [i9].Value, [i10].Value, [i11].Value, [i12].Value, [d16].Value, _
[d17].Value, [d18].Value, [d19].Value, [h16].Value, [h17].Value, [h18].Value, [h19].Value, _
[a22].Value, [b22].Value, [d22].Value, [e22].Value, [g22].Value, [h22].Value, [a24].Value, _
[b24].Value, [d24].Value, [e24].Value, [g24].Value, [h24].Value, [a26].Value, [b26].Value, _
[d26].Value, [e26].Value, [g26].Value, [h26].Value, [a28].Value, [b28].Value, [d28].Value, _
[e28].Value, [g28].Value, [h28].Value, [a30].Value, [b30].Value, [d30].Value, [e30].Value, _
[g30].Value, [h30].Value, [a33].Value, [b33].Value, [d33].Value, [e33].Value, [g33].Value))
.Range("gr" & Fila).Resize(, 50) = _
ActiveWorkbook.Worksheets("acteco").Range( _
Array([c8].Value, [c9].Value, [c10].Value, [c11].Value, [c12].Value, [d8].Value, [d9].Value, _
[d10].Value, [d11].Value, [d12].Value, [h8].Value, [h9].Value, [h10].Value, [h11].Value, _
[h12].Value, [d15].Value, [d16].Value, [d17].Value, [d18].Value, [d19].Value, [i15].Value, _
[i16].Value, [i17].Value, [i18].Value, [i19].Value, [d21].Value, [d22].Value, [d23].Value, _
[d24].Value, [d25].Value, [i21].Value, [i22].Value, [i23].Value, [i24].Value, [i25].Value, _
[c28].Value, [c29].Value, [c30].Value, [c31].Value, [c32].Value, [f28].Value, [f29].Value, _
[f30].Value, [f31].Value, [f32].Value, [i28].Value, [i29].Value, [i30].Value, [i31].Value, [i32].Value))
.Range("ip" & Fila) = ActiveWorkbook.Worksheets("observ").Range("a16").Value
End With
ActiveWorkbook.Close False
Next
End Sub
Respuesta Responder a este mensaje
#4 Rudolph
25/09/2007 - 19:58 | Informe spam
hola héctor

el encabezado del codigo funciona perfectamente, con el codigo (chorizo)
anterior, pero al correr el que me recomiendas da un error el la linea 10 y
el depurador la sombrea hasta la 13 "se ha producido el error '1004' en el
tiempo de ejecucion"
error definido por la aplicacion o el objeto.

pd. donde puedo leer sobre los array en excel?, en lenguaje basico

saludos

Rodolfo Rangel
Corpivensa
S.G.


"Héctor Miguel" wrote:

hola, Rodolfo !

> la lista de empresas esta en el libro donde estara la macro que se llema consolidado en una hoja que se llama ubicacion...

despues de haberme *acabado las pesta#as* revisando la *kilometrica* macro de tu consulta anterior [~ 550 lineas de codigo]
te paso una [revision de] macro *aligerada* a +/- 60 lineas de codigo... NO *probadas* [obviamente no tengo los elementos] :)
es [lo que se dice]... puro *hard coded* y hay algunas situaciones que estoy *suponiendo* [p.e.]

1) la hoja en el libro "consolidado" donde recibes los datos de cada libro se llama "hoja de consolidacion" [linea 8]
2) el rango donde tienes el listado con los nombres de los archivos en la hoja "ubicacion" es 'A2:A5' [linea 5]
3) *el resto* solo ha sido un *vaciado* [+/- ordenado] de los rangos y *movimientos* de tu codigo original :D

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

la macro es la siguiente [OJO si hay *saltos de linea* -adicionales- por el lector de mensajes]:

Sub Consolida_Libros()
Dim Celda As Range, Fila As Integer, Ruta As String
Application.ScreenUpdating = False
Fila = 2
Ruta = "c:\documents and settings\jnieves\escritorio\angel\"
For Each Celda In ThisWorkbook.Worksheets("ubicacion").Range("a2:a5")
Fila = Fila + 1
Workbooks.Open Ruta & Celda & ".xls"
With ThisWorkbook.Worksheets("hoja de consolidacion")
.Range("a" & Fila).Resize(, 14) = _
ActiveWorkbook.Worksheets("ideloc").Range( _
Array([c6].Value, [c7].Value, [a9].Value, [c9].Value, [e9].Value, [g9].Value, [i9].Value, _
[a13].Value, [b13].Value, [c13].Value, [e13].Value, [g13].Value, [i13].Value, [c29].Value))
.Range("o" & Fila).Resize(, 47) = _
ActiveWorkbook.Worksheets("varsoci").Range( _
Array([a8].Value, [c8].Value, [e8].Value, [g8].Value, [i8].Value, [a12].Value, [b12].Value, _
[c12].Value, [d12].Value, [e12].Value, [f12].Value, [g12].Value, [h11].Value, [j11].Value, _
[h12].Value, [j12].Value, [h13].Value, [j13].Value, [c15].Value, [e15].Value, [g15].Value, _
[i15].Value, [c17].Value, [e17].Value, [g17].Value, [i17].Value, [a20].Value, [c20].Value, _
[e20].Value, [g20].Value, [i20].Value, [a24].Value, [c24].Value, [e24].Value, [f24].Value, _
[h24].Value, [j24].Value, [a27].Value, [c27].Value, [e27].Value, [f27].Value, [h27].Value, _
[j27].Value, [a30].Value, [c30].Value, [e30].Value, [f29].Value))
.Range("bj" & Fila).Resize(, 28) = _
ActiveWorkbook.Worksheets("varsocii").Range( _
Array([b8].Value, [b11].Value, [b14].Value, [b17].Value, [b20].Value, [b23].Value, [b26].Value, _
[b29].Value, [e8].Value, [e11].Value, [e14].Value, [e17].Value, [e20].Value, [e23].Value, _
[e26].Value, [h8].Value, [h11].Value, [h14].Value, [h17].Value, [h20].Value, [h23].Value, _
[h26].Value, [g28].Value, [a33].Value, [c33].Value, [e33].Value, [g33].Value, [i33].Value))
.Range("cl" & Fila).Resize(, 47) = _
ActiveWorkbook.Worksheets("varsociii").Range( _
Array([d8].Value, [d9].Value, [d10].Value, [d11].Value, [d12].Value, [h8].Value, [h9].Value, _
[h10].Value, [h11].Value, [h12].Value, [l8].Value, [l9].Value, [l10].Value, [l11].Value, _
[l12].Value, [d14].Value, [d15].Value, [d16].Value, [d17].Value, [d18].Value, [h14].Value, _
[h16].Value, [h18].Value, [l14].Value, [l16].Value, [l18].Value, [c21].Value, [c22].Value, _
[c23].Value, [g21].Value, [g22].Value, [g23].Value, [i22].Value, [j22].Value, [d26].Value, _
[d27].Value, [d28].Value, [h26].Value, [h27].Value, [h28].Value, [h29].Value, [i27].Value, _
[j27].Value, [i29].Value, [j29].Value, [i31].Value, [j31].Value))
.Range("eg" & Fila).Resize(, 63) = _
ActiveWorkbook.Worksheets("viaacteco").Range( _
Array([c7].Value, [c8].Value, [c9].Value, [c10].Value, [c11].Value, [c12].Value, [c13].Value, _
[f7].Value, [f8].Value, [f9].Value, [f10].Value, [f11].Value, [f12].Value, [f13].Value, _
[i7].Value, [i8].Value, [i9].Value, [i10].Value, [i11].Value, [i12].Value, [d16].Value, _
[d17].Value, [d18].Value, [d19].Value, [h16].Value, [h17].Value, [h18].Value, [h19].Value, _
[a22].Value, [b22].Value, [d22].Value, [e22].Value, [g22].Value, [h22].Value, [a24].Value, _
[b24].Value, [d24].Value, [e24].Value, [g24].Value, [h24].Value, [a26].Value, [b26].Value, _
[d26].Value, [e26].Value, [g26].Value, [h26].Value, [a28].Value, [b28].Value, [d28].Value, _
[e28].Value, [g28].Value, [h28].Value, [a30].Value, [b30].Value, [d30].Value, [e30].Value, _
[g30].Value, [h30].Value, [a33].Value, [b33].Value, [d33].Value, [e33].Value, [g33].Value))
.Range("gr" & Fila).Resize(, 50) = _
ActiveWorkbook.Worksheets("acteco").Range( _
Array([c8].Value, [c9].Value, [c10].Value, [c11].Value, [c12].Value, [d8].Value, [d9].Value, _
[d10].Value, [d11].Value, [d12].Value, [h8].Value, [h9].Value, [h10].Value, [h11].Value, _
[h12].Value, [d15].Value, [d16].Value, [d17].Value, [d18].Value, [d19].Value, [i15].Value, _
[i16].Value, [i17].Value, [i18].Value, [i19].Value, [d21].Value, [d22].Value, [d23].Value, _
[d24].Value, [d25].Value, [i21].Value, [i22].Value, [i23].Value, [i24].Value, [i25].Value, _
[c28].Value, [c29].Value, [c30].Value, [c31].Value, [c32].Value, [f28].Value, [f29].Value, _
[f30].Value, [f31].Value, [f32].Value, [i28].Value, [i29].Value, [i30].Value, [i31].Value, [i32].Value))
.Range("ip" & Fila) = ActiveWorkbook.Worksheets("observ").Range("a16").Value
End With
ActiveWorkbook.Close False
Next
End Sub



Respuesta Responder a este mensaje
#5 Héctor Miguel
26/09/2007 - 00:35 | Informe spam
hola, Rodolfo !

el encabezado del codigo funciona perfectamente, con el codigo (chorizo) anterior
pero al correr el que me recomiendas da un error el la linea 10 y el depurador la sombrea hasta la 13
"se ha producido el error '1004' en el tiempo de ejecucion" error definido por la aplicacion o el objeto.

pd. donde puedo leer sobre los array en excel?, en lenguaje basico



1) lo de *leer en lenguaje basico* acerca de los array en excel... [lo mas basico que conozco]...
-> lo puedes consultar en la ayuda en linea {F1} en VBA de excel -> temas relacionados con *matrices* y *variables*

2) por lo referente a las fallas que comentas [probablemente] *mis supuestos* no los has corregido con *tu realidad* ???
solo estoy tratando de evitar *la danza* del codigo-chorizo [los *.Select* y *.Activate*] entre libros, hojas y rangos

a) el nombre de la hoja que *recibe* los datos en el libro "consolidado" ?
*mi supuesto* fue darle el nombre de: "hoja de consolidacion"
-> como se llama tu hoja *realmente* ? [en el codigo-chorizo no hay ninguna referencia a dicha hoja]

b) el rango en la hoja "ubicacion" donde pones el nombre de los libros que se abriran ?
*mi supuesto* fue que se trataba del rango 'A4:A5'
-> cual es el rango en la realidad ?

[por si los hubieras *perdido de vista*] te retranscribo los que fueron *mis supuestos*:
... y hay algunas situaciones que estoy *suponiendo* [p.e.]

1) la hoja en el libro "consolidado" donde recibes los datos de cada libro se llama "hoja de consolidacion" [linea 8]
2) el rango donde tienes el listado con los nombres de los archivos en la hoja "ubicacion" es 'A2:A5' [linea 5]
3) *el resto* solo ha sido un *vaciado* [+/- ordenado] de los rangos y *movimientos* de tu codigo original :D

asi que... si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida