Para Dante, Copiar datos de una hoja y pegarlas en varias hojas

Hola! Dante

Recurriendo nuevamente a tu valiosa ayuda, tengo una macro que me copia los datos de una Hoja y las pega en 31 hojas siempre en la celda "C4" , lo que busco es que la macro sea mas eficiente y mas rápido al ejecutarlo, la macro que tengo es la siguiente.

Sub copiar_celdas()
Hoja45.Range("K5").Copy
Hoja1.Range("C4").PasteSpecial xlPasteAll
Hoja45.Range("K6").Copy
Hoja2.Range("C4").PasteSpecial xlPasteAll
Hoja45.Range("K7").Copy
Hoja3.Range("C4").PasteSpecial xlPasteAll
Hoja45.Range("K8").Copy
Hoja4.Range("C4").PasteSpecial xlPasteAll
Hoja45.Range("K9").Copy
Hoja5.Range("C4").PasteSpecial xlPasteAll
Hoja45.Range("K10").Copy
Hoja6.Range("C4").PasteSpecial xlPasteAll
Hoja45.Range("K11").Copy
Hoja7.Range("C4").PasteSpecial xlPasteAll
Hoja45.Range("J11").Copy
Hoja8.Range("C4").PasteSpecial xlPasteAll
Hoja45.Range("K12").Copy
Hoja10.Range("C4").PasteSpecial xlPasteAll
Hoja45.Range("K13").Copy
Hoja11.Range("C4").PasteSpecial xlPasteAll
Hoja45.Range("K14").Copy
Hoja12.Range("C4").PasteSpecial xlPasteAll
Hoja45.Range("K15").Copy
Hoja13.Range("C4").PasteSpecial xlPasteAll
Hoja45.Range("K16").Copy
Hoja14.Range("C4").PasteSpecial xlPasteAll
Hoja45.Range("K17").Copy
Hoja15.Range("C4").PasteSpecial xlPasteAll
Hoja45.Range("K18").Copy
Hoja16.Range("C4").PasteSpecial xlPasteAll
Hoja45.Range("J18").Copy
Hoja17.Range("C4").PasteSpecial xlPasteAll
Hoja45.Range("K19").Copy
Hoja18.Range("C4").PasteSpecial xlPasteAll
Hoja45.Range("K20").Copy
Hoja19.Range("C4").PasteSpecial xlPasteAll
Hoja45.Range("K21").Copy
Hoja20.Range("C4").PasteSpecial xlPasteAll
Hoja45.Range("K22").Copy
Hoja21.Range("C4").PasteSpecial xlPasteAll
Hoja45.Range("K23").Copy
Hoja22.Range("C4").PasteSpecial xlPasteAll
Hoja45.Range("K24").Copy
Hoja23.Range("C4").PasteSpecial xlPasteAll
Hoja45.Range("K25").Copy
Hoja24.Range("C4").PasteSpecial xlPasteAll
Hoja45.Range("J25").Copy
Hoja25.Range("C4").PasteSpecial xlPasteAll
Hoja45.Range("K26").Copy
Hoja27.Range("C4").PasteSpecial xlPasteAll
Hoja45.Range("K27").Copy
Hoja28.Range("C4").PasteSpecial xlPasteAll
Hoja45.Range("K28").Copy
Hoja29.Range("C4").PasteSpecial xlPasteAll
Hoja45.Range("K29").Copy
Hoja30.Range("C4").PasteSpecial xlPasteAll
Hoja45.Range("K30").Copy
Hoja31.Range("C4").PasteSpecial xlPasteAll
Hoja45.Range("K31").Copy
Hoja32.Range("C4").PasteSpecial xlPasteAll
Hoja45.Range("K32").Copy
Hoja33.Range("C4").PasteSpecial xlPasteAll
Hoja45.Range("J32").Copy
Hoja34.Range("C4").PasteSpecial xlPasteAll
Hoja45.Range("K33").Copy
Hoja35.Range("C4").PasteSpecial xlPasteAll
Hoja45.Range("K34").Copy
Hoja36.Range("C4").PasteSpecial xlPasteAll
Hoja45.Range("K35").Copy
Hoja37.Range("C4").PasteSpecial xlPasteAll
Hoja45.Range("J39").Copy
Hoja38.Range("C4").PasteSpecial xlPasteAll
End Sub

Gracias por tu respuesta que me puedas dar.

1 Respuesta

Respuesta
1

Esta puede ser una opción:

Sub copiar_celdas()
    Application.ScreenUpdating = False
    Hoja45. Range("K5"). Copy
    Hoja1. Range("C4"). PasteSpecial xlPasteAll
    Hoja2. Range("C4"). PasteSpecial xlPasteAll
    Hoja3. Range("C4"). PasteSpecial xlPasteAll
    Hoja4. Range("C4"). PasteSpecial xlPasteAll
    Hoja5. Range("C4"). PasteSpecial xlPasteAll
    Hoja6. Range("C4"). PasteSpecial xlPasteAll
    Hoja7. Range("C4"). PasteSpecial xlPasteAll
    Hoja8. Range("C4"). PasteSpecial xlPasteAll
    Hoja10. Range("C4"). PasteSpecial xlPasteAll
    Hoja11. Range("C4"). PasteSpecial xlPasteAll
    Hoja12. Range("C4"). PasteSpecial xlPasteAll
    Hoja13. Range("C4"). PasteSpecial xlPasteAll
    Hoja14. Range("C4"). PasteSpecial xlPasteAll
    Hoja15. Range("C4"). PasteSpecial xlPasteAll
    Hoja16. Range("C4"). PasteSpecial xlPasteAll
    Hoja17. Range("C4"). PasteSpecial xlPasteAll
    Hoja18. Range("C4"). PasteSpecial xlPasteAll
    Hoja19. Range("C4"). PasteSpecial xlPasteAll
    Hoja20. Range("C4"). PasteSpecial xlPasteAll
    Hoja21. Range("C4"). PasteSpecial xlPasteAll
    Hoja22. Range("C4"). PasteSpecial xlPasteAll
    Hoja23. Range("C4"). PasteSpecial xlPasteAll
    Hoja24. Range("C4"). PasteSpecial xlPasteAll
    Hoja25. Range("C4"). PasteSpecial xlPasteAll
    Hoja27. Range("C4"). PasteSpecial xlPasteAll
    Hoja28. Range("C4"). PasteSpecial xlPasteAll
    Hoja29. Range("C4"). PasteSpecial xlPasteAll
    Hoja30. Range("C4"). PasteSpecial xlPasteAll
    Hoja31. Range("C4"). PasteSpecial xlPasteAll
    Hoja32. Range("C4"). PasteSpecial xlPasteAll
    Hoja33. Range("C4"). PasteSpecial xlPasteAll
    Hoja34. Range("C4"). PasteSpecial xlPasteAll
    Hoja35. Range("C4"). PasteSpecial xlPasteAll
    Hoja36. Range("C4"). PasteSpecial xlPasteAll
    Hoja37. Range("C4"). PasteSpecial xlPasteAll
    Hoja38. Range("C4"). PasteSpecial xlPasteAll
End Sub

Prueba y me comentas.

Por lo que veo estás ocupando el nombre de objeto de la hoja para realizar el pegado, además no llevan un consecutivo, es decir no van de la 1 a la 31. Reviso si encuentro otra alternativa.

De esta forma podríamos simplificar el código

Sub copiar_celdas()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Hoja45.Range("K5").Copy
    hojas = Array(Hoja1, Hoja2, Hoja3, Hoja4, Hoja5, Hoja6, Hoja7, Hoja8, Hoja10, _
            Hoja11, Hoja12, Hoja13, Hoja14, Hoja15, Hoja16, Hoja17, Hoja18, Hoja19, _
            Hoja20, Hoja21, Hoja22, Hoja23, Hoja24, Hoja25, Hoja27, Hoja28, Hoja29, _
            Hoja30, Hoja31, Hoja32, Hoja33, Hoja34, Hoja35, Hoja36, Hoja37, Hoja38)
    For i = LBound(hojas) To UBound(hojas)
        Set h = Sheets(hojas(i).Name)
        h.Range("C4").PasteSpecial xlPasteAll
    Next
End Sub

En el array escribe los nombres de las hojas en las que vas a pegar.


¡Gracias! Dante 

E probado la primera opción esta no me realiza lo que quiero me pone todo con un mismo dato , ahora estoy adaptando la segunda opción ya te comentare de como me esta hiendo.

Hola! Dante

la segunda opción me realiza lo mismo que la primera, creo lo que pasa es que no me esta tomando los datos que tiene una tabla que realice solo lo esta tomando el dato de una celda la K5 para todas las hojas, la tabla que tengo es la siguiente y esta en la hoja 45.con nombre"Tabla", 

Lo que requiero es que copie la celda K5 de la tabla y la pegue en la celda C4 de la hoja1 , la K6 a Hoja2 Celda C4,  la K7 a Hoja3 Celda C4 etc. La macro Inicial realiza Esa función Pero con retardo eso hace que sea ineficiente la macro

Disculpa me falto ese detalle, te anexo la macro.

Sub copiar_celdas()
'Por.Dante Amor
    Application.ScreenUpdating = False
    hojas = Array(Hoja1, Hoja2, Hoja3, Hoja4, Hoja5, Hoja6, Hoja7, Hoja8, Hoja10, _
            Hoja11, Hoja12, Hoja13, Hoja14, Hoja15, Hoja16, Hoja17, Hoja18, Hoja19, _
            Hoja20, Hoja21, Hoja22, Hoja23, Hoja24, Hoja25, Hoja27, Hoja28, Hoja29, _
            Hoja30, Hoja31, Hoja32, Hoja33, Hoja34, Hoja35, Hoja36, Hoja37, Hoja38)
    j = 5
    For i = LBound(hojas) To UBound(hojas)
        Hoja45.Range("K" & j).Copy
        Set h = Sheets(hojas(i).Name)
        h.Range("C4").PasteSpecial xlPasteAll
        j = j + 1
    Next
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas