Para Dante, Macro para Copiar datos de celdas de varias hojas y guardarlas en una hoja.

Hola! Dante 

Gracias por la maravillosa ayuda que siempre me has brindado, hiendo a mi pregunta tengo 35 hojas una de ellas es la "base de datos" y cuatro de ellas son de gráficos, formulas etc.  y las demás hojas son donde coloco información, las hojas del 1 al 30 son idénticas pero con nombres de fecha del calendario y las celdas que quiero copiar son "L7 y L11" de las hojas del 1 al 30 y almacenarlas en columnas en la hoja "Base de Datos" a partir de la celda "C52", y en la celda "C51" Los nombres de las hojas que son fecha

Los nuevos datos que registre que se almacene en las siguientes columnas vacías.

Bueno a este no se si se le puede agregar un Msgbox  indicando "Los datos con estas fechas ya existen" esto indicara que ya guarde los registros. Gracias por la respuesta que me puedas dar.

1 Respuesta

Respuesta
1

Te anexo la macro, si la fecha ya fue copiada, actualizará los datos.

Sub CopiarDatos()
'Por.Dante Amor
    Set h1 = Sheets("base de datos")
    j = 3
    For Each h In Sheets
        If InStr(1, h.Name, ".") > 0 Then
            h.[L7:L11].Copy
            h1.Cells(51, j) = h.Name
            h1.Cells(52, j).PasteSpecial Paste:=xlPasteValues
            j = j + 1
        End If
    Next
    MsgBox "Copiar datos terminado"
End Sub

No olvides valorar la respuesta.

Hola! Dante 

Gracias por la rápida respuesta, la macro que me diste esta bien pero le falta unos detalles mas para que este perfecto, si yo presiono el botón de guardar por error dos veces este me mande el mensaje "Los datos con estas fechas ya existen", te comento dante que las hojas cambian de nombre según calendario por lo tanto si el siguiente mes es enero tendré nuevos datos con nombres nuevos de las hojas, por lo tanto al ejecutar la macro este me tendrá que guardar en las siguientes columnas o celdas que estén en blanco por ejemplo

si mis datos se guardaron a partir de la celda C52  los siguiente datos tendrán que almacenarse a partir de la celda  AH52  luego a partir del BM52 etc. ya que son 31 datos. Gracias y espero no causar tanto problema con este tema.

Hola! Dante 

Me faltaba indicar sobre las celdas a copiar.

la celda L7 son los Hectolitros envasados

la celda L11 son los Hectolitros Elaborados

Te cambio la macro

Sub CopiarDatos()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Set h1 = Sheets("base de datos")
    For Each h In Sheets
        If InStr(1, h.Name, ".") > 0 Then
            h.[L7,L11].Copy
            Set b = h1.Rows(51).Find(h.Name)
            If Not b Is Nothing Then
                h1.Cells(52, b.Column).PasteSpecial Paste:=xlPasteValues
            Else
                u = h1.Cells(51, Columns.Count).End(xlToLeft).Column + 1
                If u < 3 Then u = 3
                h1.Cells(51, u) = h.Name
                h1.Cells(52, u).PasteSpecial Paste:=xlPasteValues
            End If
        End If
    Next
    MsgBox "Copiar datos terminado"
End Sub

Disculpa por la molestia Dante, los datos de la celda L11 no las copia, debería de copiarse a partir de la celda C53 que son de Hectolitros por lo demás esta bien. 

Revisa que tengas datos, yo lo probé y en c52 me pone L7 y en C53 me pone L11

Hola! Dante

La celda L11 es una celda combinada , seria ese el problema,

Hola! Dante 

Gracias por la macro, la probé en otro archivo y realmente funciona, pero porque no funciona cuando uno ejecuta con celdas combinadas me manda error '1004'indicando que no se puede cambiar parte de una celda combinada.   

El problema efectivamente es la celda combinada, incluso si lo intentas hacer manualmente sin utilizar la macro te va a marcar el mismo error, se tiene que corregir la macro para copiar cada una de las celdas que están en la celda combinada, o bien, tendría que ver cómo tienes la celda combinada para que la macro lo resuelva.

Si puedes quitar la celda combinada, no hay que modificar la macro. Si quieres conservar la celda combinada y quieres una macro nueva que resuelva esa situación, valora esta respuesta y crea una nueva. En la nueva pregunta expones con claridad en dónde están las celdas combinadas.

¡Gracias! Dante 

Quite la celda combinada y la macro si funciona.

Si es necesario realizar una nueva pregunta no hay ningún problema, yo también quiero saber cual seria el cambio que hay que realizar en la macro te estaré asiendo una nueva pregunta Gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas