¿Cómo copiar de una a todas las hojas de excel?

Hola! Mi pregunta se refiere a como programar una macro que, desde una hoja de excel, copie dos rangos diferentes de celdas y luego los pegue en el mismo lugar en todas las hojas de excel, hice una que lo hace solo de una hoja a otra, pero solo funciona para esas dos en especifico.
Intente usar un "for each" y al parecer hace el rocorrido en todas las hojas pero no lo pega, esto es lo que tengo del código:
Esta solo sirve entre 2 hojas:
Sub machote()
'
' machote Macro
'
Sheets("1").Select
Rows("93:605").Select
Selection.Copy
Sheets("2").Select
Rows("93:93").Select
ActiveSheet.Paste
Sheets("1").Select
Range("F27:F29").Select
Application.CutCopyMode = False
Selection.Copy
Sheets(" 2").Select
Range("F27").Select
ActiveSheet.Paste
End Sub
esta hace el recorrido de todas las hojas pero no pega nada en ellas:
Sub copiatodo()
'
' copiatodo Macro
'
' Acceso directo: Ctrl+Mayús+P
'
Dim Sht As Worksheet
Dim sCurrentSheet As String
sCurrentSheet = ActiveSheet.Name
Application.ScreenUpdating = False
For Each Sht In Application.Worksheets
Sht.Activate
Sheets("1").Select
Rows("93:605").Select
Selection.Copy
ActiveSheet.Select
Rows("93:93").Select
ActiveSheet.Select
Sheets("1").Select
Range("F27:F29").Select
Application.CutCopyMode = False
Selection.Copy
ActiveSheet.Select
Range("F27").Select
ActiveSheet.Select
Next Sht
Worksheets(sCurrentSheet).Activate
End Sub
Muchas gracias

1 respuesta

Respuesta
1
Te está faltando la instrucción de Paste.
Te dejo la rutina ajustada, a la que le agregué además que omita la hoja de copia, en tu caso la 1, porque en esta no necesitas pegar lo mismo.
En el bucle el copiado se hace sobre Sht. Name, es decir la hoja activa en cada ciclo del bucle.
Sub copiatodo()
'
' copiatodo Macro ajustada por Elsamatilde
'
' Acceso directo: Ctrl+Mayús+P
'
Dim Sht As Worksheet
Dim sCurrentSheet As String
sCurrentSheet = ActiveSheet.Name
Application.ScreenUpdating = False
For Each Sht In Application.Worksheets
If Sht.Name <> "1" Then
Sheets("1").Select
Rows("93:605").Select
Selection.Copy
Sheets(Sht.Name).Select
Rows("93:93").Select
ActiveSheet.Paste
Sheets("1").Select
Range("F27:F29").Select
Selection.Copy
Sheets(Sht.Name).Select
Range("F27").Select
ActiveSheet.Paste
End If
Next Sht
Worksheets(sCurrentSheet).Activate
End Sub
Pruébala y si todo quedó resuelto no olvides volver y finalizar la consulta.
Hola Elsa!
Muchísimas gracias por tu ayuda, apenas comienzo en esto de la programación de macros más por necesidad que por gusto... mira copie tu macro, pero al correrla me manda este error en la linea subrayada:
"se ha producido el error 1004 en tiempo de ejecución:
error en el metodo select de la clase worsheet"
Espero puedas ayudarme con eso y muchas gracias nuevamente...
Perdón, aquí esta la linea donde muestra el error:
Sub copiatodo()
'
' copiatodo Macro ajustada por Elsamatilde
'
' Acceso directo: Ctrl+Mayús+P
'
Dim Sht As Worksheet
Dim sCurrentSheet As String
sCurrentSheet = ActiveSheet.Name
Application.ScreenUpdating = False
For Each Sht In Application.Worksheets
If Sht.Name <> "1" Then
Sheets("1").Select
Rows("93:605").Select
Selection.Copy
Sheets(Sht.Name).Select       <--------------
Rows("93:93").Select
ActiveSheet.Paste
Sheets("1").Select
Range("F27:F29").Select
Selection.Copy
Sheets(Sht.Name).Select
Range("F27").Select
ActiveSheet.Paste
End If
Next Sht
Worksheets(sCurrentSheet).Activate
End Sub
A mi no me dá error.
Mejor te envío el libro. Solicitamelo al correo que encontrarás en mi sitio, para que puedas observarlo en detalle. No olvides recordarme tu nick o motivo de consulta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas