Copiar datos de una hoja a otra con macro

As):

Hice una grabación de macro para pasar datos de una hoja llamada "OC trabajada" y pasar los datos a la hoja llamada "WHINSUTER", lo que quiero que me den soporte si hay alguna manera de hacer el código mas simple o funcional, para que se pueda adaptar a varias necesidades según mi tamaño de datos en mi archivo.

En la foto les detallo que columnas intervienen, de donde copio los datos y a donde los muevo, todos los datos a partir de la fila 2, ya que la 1 son las cabeceras de los títulos. Asimismo, les adjunto el codigo VBA que me genero la grabadora macro.

A la espera de su apoyo. Gracias.

Código generado:

Sub Pasar()

'Por Juan arenas Ejecutarla con: Ctrl+w
Application.ScreenUpdating = False

Range("A2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("WHINSUTER").Select
Range("E2").Select
ActiveSheet.Paste
Sheets("OC TRABAJADA").Select
Range("D2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("WHINSUTER").Select
ActiveWindow.SmallScroll Down:=-12
Range("F2").Select
ActiveSheet.Paste
Sheets("OC TRABAJADA").Select
Range("B2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("WHINSUTER").Select
ActiveWindow.SmallScroll Down:=-9
Range("G2").Select
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=-9
Sheets("OC TRABAJADA").Select
Range("C2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("WHINSUTER").Select
ActiveWindow.SmallScroll Down:=-12
Range("H2").Select
ActiveSheet.Paste
Sheets("OC TRABAJADA").Select
Range("G2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("WHINSUTER").Select
ActiveWindow.SmallScroll Down:=-9
Range("I2").Select
ActiveSheet.Paste
Sheets("OC TRABAJADA").Select
Range("H2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("WHINSUTER").Select
ActiveWindow.SmallScroll Down:=-9
Range("J2").Select
ActiveSheet.Paste
Sheets("OC TRABAJADA").Select
Range("E2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("WHINSUTER").Select
ActiveWindow.SmallScroll Down:=-12
Range("M2").Select
ActiveSheet.Paste
Sheets("OC TRABAJADA").Select
Range("I2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("WHINSUTER").Select
ActiveWindow.SmallScroll Down:=-15
Range("N2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.ClearContents
Sheets("OC TRABAJADA").Select
ActiveWindow.SmallScroll Down:=-36
Selection.Copy
Sheets("WHINSUTER").Select
Range("N2").Select
ActiveSheet.Paste
Sheets("OC TRABAJADA").Select
Range("J2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("WHINSUTER").Select
ActiveWindow.SmallScroll Down:=-12
Range("O2").Select
ActiveSheet.Paste
Sheets("OC TRABAJADA").Select
Range("F2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("WHINSUTER").Select
ActiveWindow.SmallScroll Down:=-6
Range("P2").Select
ActiveSheet.Paste
Sheets("OC TRABAJADA").Select
Range("K2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("WHINSUTER").Select
ActiveWindow.SmallScroll Down:=-15
Range("Q2").Select
ActiveSheet.Paste
Sheets("OC TRABAJADA").Select
Range("L2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("WHINSUTER").Select
ActiveWindow.SmallScroll Down:=-12
Range("R2").Select
ActiveSheet.Paste
Sheets("OC TRABAJADA").Select
ActiveWindow.SmallScroll Down:=-12
Range("M2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("WHINSUTER").Select
ActiveWindow.SmallScroll Down:=-15
Range("S2").Select
ActiveSheet.Paste
Sheets("OC TRABAJADA").Select
ActiveWindow.SmallScroll ToRight:=4
Range("P2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("WHINSUTER").Select
ActiveWindow.SmallScroll ToRight:=2
ActiveWindow.SmallScroll Down:=-9
Range("T2").Select
ActiveSheet.Paste
ActiveWindow.LargeScroll ToRight:=-1
Range("K2").Select

End Sub

Respuesta
1

Prueba con este código:

Sub Copiar()
'Por: Raul Hernandez
Dim xlDatos() As Variant  'El vector es variant porque no se que tipo de datos estas usando
    Sheets("OC TRABAJADA").Select
    Range("A2").Select
    i = 1
    While ActiveCell.Value <> ""
        ReDim Preserve xlDatos(i) As Variant    'Dimensionamos el vector dinamicamente
        xlDatos(i) = ActiveCell.Value           'Almacenamos la informacion
        ActiveCell.Offset(1, 0).Select
        i = i + 1
    Wend
    Sheets("WHINSUTER").Select
    Range("E2").Select
    For j = 1 To i - 1
        ActiveCell.Value = xlDatos(j)
        ActiveCell.Offset(1, 0).Select
    Next
    Sheets("OC TRABAJADA").Select
    Range("A2").Select
End Sub

esto hace lo que solicitas, recorre la hoja "OC TRABAJADA" a partir de la celda A2, hasta que consiga una celda vacía, mientras, va copiando la información de esta en un vector que se dimensiona dinamicamente y va contando el numero de celdas que copia; luego se cambia a la hoja "WHINSUTER" y a partir de la celda E2, comienza a pegar la información copiada.

¡Gracias! Raúl muchas gracias por tu ayuda y la forma en que esta documentada, esta más funcional. Funciona perfecto.

Hola Raúl:

LA macro funciona muy bien, pero lo que pasa es que hace el cambio en la hoja "OC TRABAJADA", la idea es que de esa hoja pase los datos a la hoja "WHINSUTER" ojala puedas tener un correo para enviarte mi archivo. Gracias.

Disculpa por la tardanza, mi correo es [email protected]

Estimado el aporte estuvo bien, solo había que ver en que hoja estaba parado.

Muchas gracias por tu aporte.

Me alegro que te sirva.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas