LIBRO RESUMEN

11/08/2009 - 09:39 por Juan Español | Informe spam
Hola grupo:
No consigo rematar una macro que me haga lo siguiente:
Tenemos...
En una carpeta, + o - 300 libros Excel, idénticos en estructura con datos
solo en la Hoja1 rango C2:W2
Por otra parte un libro llamado RESUMEN.XLS , que en la Hoja1 columna B a
partir de la fila 3 inclusive "recoge", mediante una macro ya hecha, la ruta
completa y nombre de cada uno de los + - 300 ficheros.
En la celda X1 de la Hoja1 del libro RESUMEN tengo la cantidad exacta de
ficheros.( Cantidad de Ficheros= cf [en adelante])


Querría que el rango C2:W2 de la Hoja1 de cada uno de los +- 300 ficheros se
copiara en las filas 3 y siguientes de la Hoja1 en
Cn:Wn del libro RESUMEN.
Es decir necesito una Macro que mediante un bucle ( de 3 a cf )
- recorra el rango B3:Bcf [de la Hoja1 libro RESUMEN]
- vaya abriendo cada fichero cuya ruta y nombre está en la celda recorrida
- lea el rango C2:W2 del libro abierto
- lo copie en el rango Cn:Wn de la Hoja1 del libro RESUMEN
- cierre el libro "leido", y abra el siguiente... hasta cf.

El nombre de los ficheros, está en la columna A3:Acf de la misma Hoja1 del
libro RESUMEN.
La Macro se ejecutaría desde un botón de la Hoja1 del libro RESUMEN.

Lo mismo se os ocurre otra forma de plantear la Macro, yo sigo intentándolo
con mi método, de momento infructuosamente.

Gracias anticipadas por leeros el "tocho" = "ladrillo" .

Juan Español.-

Preguntas similare

Leer las respuestas

#1 Juan M
11/08/2009 - 10:57 | Informe spam
"Juan Español" escribió
Hola grupo:
No consigo rematar una macro que me haga lo siguiente:
Tenemos...
En una carpeta, + o - 300 libros Excel, idénticos en estructura con datos
solo en la Hoja1 rango C2:W2
Por otra parte un libro llamado RESUMEN.XLS , que en la Hoja1 columna B a
partir de la fila 3 inclusive "recoge", mediante una macro ya hecha, la
ruta completa y nombre de cada uno de los + - 300 ficheros.
En la celda X1 de la Hoja1 del libro RESUMEN tengo la cantidad exacta de
ficheros.( Cantidad de Ficheros= cf [en adelante])


Querría que el rango C2:W2 de la Hoja1 de cada uno de los +- 300 ficheros
se copiara en las filas 3 y siguientes de la Hoja1 en
Cn:Wn del libro RESUMEN.
Es decir necesito una Macro que mediante un bucle ( de 3 a cf )
- recorra el rango B3:Bcf [de la Hoja1 libro RESUMEN]
- vaya abriendo cada fichero cuya ruta y nombre está en la celda recorrida
- lea el rango C2:W2 del libro abierto
- lo copie en el rango Cn:Wn de la Hoja1 del libro RESUMEN
- cierre el libro "leido", y abra el siguiente... hasta cf.

El nombre de los ficheros, está en la columna A3:Acf de la misma Hoja1 del
libro RESUMEN.
La Macro se ejecutaría desde un botón de la Hoja1 del libro RESUMEN.

Lo mismo se os ocurre otra forma de plantear la Macro, yo sigo
intentándolo con mi método, de momento infructuosamente.

Gracias anticipadas por leeros el "tocho" = "ladrillo" .

Juan Español.-




Hola Juan,

Prueba con el siguiente código:
Los 300 libros los abre como solo lectura, no permite la ejecucion de macros
de los libros abiertos, me pareceria bueno tambien impedir el recalculo del
libro por si lleva mucha formula, pero lo dejo a tu eleccion.
Como abre cada libro ocasionaria un continuo parpadeo, se congela la vista y
se indica en la barra de estado el libro por el que va.
Copia el rango indicado y cierra.
Recorre el bucle hasta que encuentra una casilla en blanco.

Un saludo,
Juan

El codigo

Sub Prueba()

Dim Libro As Workbook
Dim i As Long
Dim HojaResumen As Worksheet

With Application
.ScreenUpdating = False
.EnableEvents = False
End With

i = 2

Set HojaResumen = ActiveSheet
Do While HojaResumen.Range("B" & i) <> ""

Set Libro = Workbooks.Open(HojaResumen.Range("B" & i), _
ReadOnly:=True)

Application.StatusBar = HojaResumen.Range("B" & i)

Libro.Worksheets(1).Range("C2:W2").Copy _
Destination:=HojaResumen.Range("C" & i)

Libro.Close savechanges:=False
i = i + 1
Loop

With Application
.ScreenUpdating = True
.EnableEvents = True
.StatusBar = False
End With
End Sub
Respuesta Responder a este mensaje
#2 Juan Español
11/08/2009 - 11:34 | Informe spam
Va como un tiro Juan M.
Los libros que se abren no tienen ni una sola fórmula, por lo tanto no hace
falta impedir el recálculo.
Sólo cambié el i=2 por el i=3 (empiezo en la fila 3).
Así que pleno completo.

Gracias, conseguía hacerlo línea a línea, pero el bucle se me resistía.
Me ha gustado lo de "leer" el nombre del libro al abrirlo con:

Set Libro = Workbooks.Open(HojaResumen.Range("B" & i), _
ReadOnly:=True)

Y la chulada de la barra de estado:

Application.StatusBar = HojaResumen.Range("B" & i)

Gracias una vez más..

Saludos.-



El codigo

Sub Prueba()

Dim Libro As Workbook
Dim i As Long
Dim HojaResumen As Worksheet

With Application
.ScreenUpdating = False
.EnableEvents = False
End With

i = 2

Set HojaResumen = ActiveSheet
Do While HojaResumen.Range("B" & i) <> ""

Set Libro = Workbooks.Open(HojaResumen.Range("B" & i), _
ReadOnly:=True)

Application.StatusBar = HojaResumen.Range("B" & i)

Libro.Worksheets(1).Range("C2:W2").Copy _
Destination:=HojaResumen.Range("C" & i)

Libro.Close savechanges:=False
i = i + 1
Loop

With Application
.ScreenUpdating = True
.EnableEvents = True
.StatusBar = False
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