Juntar algunos datos en una sola hoja

03/12/2003 - 21:23 por Estela Martinez | Informe spam
Hola:

Recurro a este foro de nuevo ya que la ayuda que me han
enviado fue una macro pero al ejecutarla me da error,
entonces vuelvo a pregunatar si alguien sabe:

tengo un libro de excel con 300 hojas, siendo que cada
una de esas hojas son los datos de cada cliente que
contrató determinado tipo de seguro, o sea, el libro
entero es un control de los seguros contratados por mis
300 clientes.

Necesito crear una única planilla que tenga solo algunos
datos de las planillas de cada cliente, que me liste los
nombres de los clientes, la zona donde viven, la compania
de seguros que contrataron y el tipo de producto
contratado, mi pregunta es como puedo hacer para en una
sola planilla listar estos datos que estan en cada una de
las 300 hojas que son como dije datos de cada cliente.

Espero haberme sabido entender...

Saludos y gracias a quien me pueda ayudar.

Estela
 

Leer las respuestas

#1 Héctor Miguel
04/12/2003 - 22:34 | Informe spam
hola, Estela !

... me han enviado una macro pero al ejecutarla me da error [...]
... libro de excel con 300 hojas ... cada una ... son datos de ... cliente ... determinado tipo de seguro [...]
... crear una unica planilla ... algunos datos ... de cada cliente ... los nombres ... zona ... compania ... tipo de producto


[...]

en tus mensajes anteriores comentas que dichas hojas se 'auto-ordenan' alfabeticamente previo al guardar...
tambien que necesitas que la hoja-resumen 'permanezca' como la ultima en el libro, y que eres 'novicia' en vba...
no comentas cual es el error que estas obteniendo actualmente al ejecutar la macro recibida :((
quedan aun algunas 'lagunas' que habran de resolverse 'sobre la marcha' :))
1.- para 'mantener' al final [o al principio] del libro la hoja-resumen, deberas 'ponerle' un nombre que 'lo asegure' en esa
posicion
[p.e. 'ZZZzzz'] asumiendo que los nombre de las hojas NO incluyen algun numero para los clientes, de lo contrario...
pudiera ser que la hoja [p.e.] 'Cliente 2' quedara a la vuelta de la esquina [despues de 'Cliente 1', 'Cliente 10', 'Cliente
100'...]
2.- he puesto un 'array' para los rangos de las hojas de clientes 'de donde se toman' los datos para el resumen [nombre, zona, etc.]
[creo que] es mas facil de modificar / ampliar / recortar / etc. => LAS MISMAS CELDAS EN TODAS LAS HOJAS <3.- 'inicialmente' el pase [a la hoja-resumen] se efectua a partir de la fila 2 [usa la fila 1 para los titulos de los datos]
4.- si la macro de 'toma de datos' se ejecuta varias veces [obviamente] los datos se 'iran acumulando' ==> REPETIDAMENTE <= [haria falta algun tipo de verificacion para evitar las duplicidades, 'pero'... falta algo de informacion de tu parte] :))
en el modulo de codigo del libro 'ThisWorkbook' para ordenar las hojas ==Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim Sig As Integer, Ant As Integer, Post As Integer
With ThisWorkbook.Worksheets
For Sig = 1 To .Count
Post = Sig
For Ant = Sig + 1 To .Count
If .Item(Ant).Name < .Item(Post).Name Then Post = Ant
Next
If Post <> Sig Then .Item(Post).Move .Item(Sig)
Next
End With
End Sub
en un modulo de codigo 'normal' para el 'pase' de los datos de cada hoja a la hoja-resumen ==Sub Clientes_Al_Resumen()
Dim Hoja As Integer, Dato As Integer, Datos As Variant
Datos = Array("a1", "a2", "a3", "a4")
For Hoja = 1 To Worksheets.Count
If Worksheets(Hoja).Name <> "ZZZzzz" Then
With Worksheets("ZZZzzz").Range("a65536").End(xlUp)
For Dato = 0 To UBound(Datos)
.Offset(1, Dato) = Worksheets(Hoja).Range(Datos(Dato))
Next
End With
End If
Next
End Sub

saludos,
hector.

Preguntas similares