Código Actualizar Macro, como tendría que hacer para que la macro al actualizar las hojas de actualice la hoja madre

Tengo una planilla excel con 12 hojas que corresponden a cada mes, antes de enero inserte una hoja que se llama Union en la cual ejecute la siguiente macro para juntar la información de esos 12 meses, y así dejar el año completo en una sola hoja, La macro funciona bien, pero si yo modifico una de esas hojas y vuelvo a ejecutar la macro, no toma el dato actualizad.

Quisiera saber como se puede hacer para que se actualice la hoja Union al modificar las demás hojas.

Sub unionhojas()

Sheets("Union").Select 'Recuerda nombrar una hoja con el nombre de Union
ultimf = Range("A" & Cells.Rows.Count).End(xlUp).Row + 1
For hoja = 2 To Sheets.Count
Sheets(hoja).Select
ufh = Range("A" & Cells.Rows.Count).End(xlUp).Row
Range("A2:R" & ufh).Copy 'en esta linea puedes modificar el rango de celdas a copiar
Sheets("Union").Select
ultimf = Range("A" & Cells.Rows.Count).End(xlUp).Row + 1
Range("A" & ultimf).PasteSpecial Paste:=xlPasteAll
Next hoja
MsgBox ("Fin preceso informacion unida")
End Sub

1 respuesta

Respuesta
1

Lo que hace tu macro es copiar las hojas, siempre debajo de la información que tienes en la hoja "union"

Por ejemplo, tienes 5 líneas en cada hoja. Ejecutas la macro, entonces en la hoja "union", tendrás 60 líneas, realizas cambios en tus hojas de mes, si ejecutas nuevamente la macro, ahora te va a agregar 60 líneas debajo de las primeras 60 líneas, en total en la hoja "union" vas a tener 120 líneas, y así sucesivamente, cada que ejecutes la macro te va a agregar 60 líneas al final de los datos que ya tienes en la hoja "union".

Tengo un par de dudas. Quieres que suceda lo anterior, o refieres, borrar toda la hoja "union" y copiar las 12 hojas, entonces cada que ejecutes la macro, solamente tendrás en la hoja "union" 60 líneas, con la información actual de las 12 hojas.

Otra duda, quieres que en automático se actualice la hoja "union", o lo quieres hacer con un botón; si lo quieres en automático, te sugiero que pongas la macro en los eventos de la hoja "union" en el evento "Activate", de esa forma cuando selecciones la hoja "union" se actualizará la información.

Dime tus comentarios y te ayudo a actualizar la macro.

Hola Estimado Dante, muchas gracias por su comentario:

"Tengo un par de dudas. Quieres que suceda lo anterior, o refieres, borrar toda la hoja "union" y copiar las 12 hojas, entonces cada que ejecutes la macro, solamente tendrás en la hoja "union" 60 líneas, con la información actual de las 12 hojas." efectivamente esto es lo que necesito 

Sin embargo lo que ocurre es lo que ud. indicaba al comienzo, siguiendo su ejemplo, la macro copia las 60 lineas y luego 60 más si la vuelvo a ejecutar sumando 120.

Quedo atenta, gracias!

Te anexo la macro actualizada

Sub unionhojas()
'Act.Por.Dante.Amor
    Set h1 = Sheets("Union")
    h1.Cells.ClearContents
    For hoja = 2 To Sheets.Count
        Set h2 = Sheets(hoja)
        u1 = h1.Range("A" & Rows.Count).End(xlUp).Row + 1
        u2 = h2.Range("A" & Cells.Rows.Count).End(xlUp).Row
        h2.Range("A2:R" & u2).Copy h1.Range("A" & u1)
    Next hoja
    MsgBox ("Fin preceso informacion unida")
End Sub

sal u dos

Estimado Dante 

Muchas gracias, analice la macro que me envió, le hice unos cambios y se ejecuto perfecto, le comento como la deje:

Sub unionhojas()
Set h1 = Sheets("Union")
h1.Cells.ClearContents
For hoja = 2 To Sheets.Count
Set h2 = Sheets(hoja)
u1 = h1.Range("A" & Rows.Count).End(xlUp).Row (quite el +1 ya que me agregaba una fila más)
u2 = h2.Range("A" & Cells.Rows.Count).End(xlUp).Row
h2.Range("A1:W" & u2).Copy h1.Range("A" & u1)  (aqui lo hice a partir del A1 para que considerar el titulo y también le di más rango de la R a la W.)
Next hoja
MsgBox ("Fin preceso informacion unida")
End Sub​

Muchísimas gracias, de verdad logré con su ayuda lo que necesitaba!

tema resulto :)

Estimado Dante y Expertos

La macro fue todo un éxito, uní toda la información de los meses en una sola hoja.
Tengo un problemilla con el siguiente paso:
Una vez guardado el libro llamado AÑO 2017 que contiene todos los meses más la hoja UNION, abrí un nuevo excel el cual guardé con el nombre COPIA AÑO 2017, me posicione en la celda A1 de la hoja1 y aplique Datos->Conexiones Existentes->Examinar en busca de más->Escritorio (donde se encontraba mi archivo) lo seleccione, escogí la hoja UNION 
=$A$1 y le di aceptar y traspaso todos los datos a la hoja1 de COPIA DE AÑO 2017, de esta forma cualquier actualización que sufra UNION se verá reflejada en la hoja1.

Trate de ser clara, todo bien hasta ahí, excepto de que en la columna B tengo datos únicos y otros que están divididos por un / (slash) por ejemplo 28999/29000 los datos únicos los toma, pero los que están divididos no... dejando mi COPIA DE AÑO 2017 incompleta :(

Trate de cambiar el Slash por un guión, guion bajo, por un puntito, por una coma pero sigue dejando las celdas vacías, creo que los signos hacen que no arroje el valor, porque si se lo quito si da el resultado, Sin embargo tengo otra planilla que hice un mes atrás que si me toma los valores con el guión.

Trate de copiar el formato y todo pero nada. 

Ayuda!

Con mucho gusto te ayudo con todas tus peticiones.

Crea una nueva pregunta en Todoexpertos. Ahí me describes con detalle lo que necesitas.

Sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas