Macro excel para copiar datos de 100 hojas en una sola

Saludos: Tengo un libro excel 400 hojas aproximadamente con la misma organización, y necesito copiar algunos datos de las mismas ( que están colocados siempre en las mismas celdas), en una hoja que llamare indice. Me gustaría poder tener un resumen o indice en donde se me indique el numero de hoja y los datos extraídos de todas las demás.
Agradeciéndoselo de antemano
Franicsco

1 Respuesta

Respuesta
1
Ok. Dime que celdas debo tomar de cada hoja y como debe quedar dispuesto en el resumen
Da un ejemplo practico.
Saludos Calvuch, y gracias por tu ayuda de antemano. Veras...
En las cien hojas -aprox- tengo un dato diferente, pero siempre en las mismas celdas b4, d4; b24, d24; b34, d34; b44, d44
Y me gustaría disponer de todos esos datos en una sola hoja llamada indice que estuviera dispuesta así:
hoja1 b4,d4; b24,d24; b34,d34; b44,d44
hoja2 b4,d4; b24,d24; b34,d34; b44,d44
hoja3 b4,d4; b24,d24; b34,d34; b44,d44
...
Es decir los datos de cada hoja en horizontal, conteniendo la primera columna el nombre de la hoja.
Gracias
Si necesitas que te envíe el archivo te lo mando, me dices como.
Gracias de nuevo
Francisco
Ok.
Acá tienes el macro
Antes de ejecutarlo debes insertar una hoja con el nombre "Indice", si se te olvida el macro te lo indicara.
Ahora desde el editor de visual basic insertas un modulo, y en ese modulo pegas esto:
Dim i As Integer
Dim n As Integer
Dim fila As Long
' calvuch 14092011
On Local Error GoTo errores
Application.ScreenUpdating = False
n = (ActiveWorkbook.Sheets.Count - 1)
fila = Application.WorksheetFunction.CountA(Sheets("indice").Range("A:A"))
If fila = 0 Then
fila = 1
Else
fila = fila + 1
End If
For i = 1 To n
Sheets("indice").Range("A" & fila) = Sheets(i).Name
Sheets("indice").Range("A" & fila).Offset(0, 1) = Sheets(i).Range("b4")
Sheets("indice").Range("A" & fila).Offset(0, 2) = Sheets(i).Range("d4")
Sheets("indice").Range("A" & fila).Offset(0, 3) = Sheets(i).Range("b24")
Sheets("indice").Range("A" & fila).Offset(0, 4) = Sheets(i).Range("d24")
Sheets("indice").Range("A" & fila).Offset(0, 5) = Sheets(i).Range("b34")
Sheets("indice").Range("A" & fila).Offset(0, 6) = Sheets(i).Range("d34")
Sheets("indice").Range("A" & fila).Offset(0, 7) = Sheets(i).Range("b44")
Sheets("indice").Range("A" & fila).Offset(0, 8) = Sheets(i).Range("d44")
fila = (fila + 1)
DoEvents
Next
Application.ScreenUpdating = True
MsgBox "Terminado", vbInformation
errores:
If Err.Number = 9 Then MsgBox "Debe insertar la hoja Indice", vbCritical
End Sub
PD: le ejecución concluye cuando aparece un mensaje de texto en pantalla informándote el final del proceso.
No olvides CERRAR la pregunta
Saludos Calvuch
Excelente, impresionante... no se como agradecértelo... perdona la falta de acentos pero este ordenador desde hace una semana no me deja poner acentos y no se por que...
Me has evitado cientos de horas de trabajo. Por cierto que me he dado cuenta de que en 70 hojas he insertado una linea en blanco y algunos datos me salen mal...¿habría posibilidad de eliminar con una macro la linea que me sobra de esas 70 hojas sin ir de una en una eliminándola?
Un millón de gracias
Francisco

Añade tu respuesta

Haz clic para o