Macro que pegue hojas en otro documento existente

Estoy intentando copiar tres hojas del documento EList en el documento ya existente OhnDoc, en hojas ya existentes.

Cuando uso el siguiente código, copia todo perfecto, pero en tres nuevas hojas.

¿

¿Podrán ayudarme señalando mi error?

También me gustaría que la macro pegara las hojas sin necesidad de que el documento destino: OhnDoc, este abierto.

Muchas gracias de antemano.

Marcela.

Sub Copy()
Windows.Application.ScreenUpdating = False
With Workbooks("EList.xlsm")
    .Sheets(Array("OhnCF", "OhnSw", "OhnOp")).Copy _
    Before:=Workbooks("OhnDoc.xlsm").Sheets(1)
End With
Windows.Application.ScreenUpdating = True
End Sub

1 Respuesta

Respuesta
1

Te anexo la macro actualizada, con los cambios, ya no es necesario que tengas abierto el documento "OhnDoc" abierto, pero deberá estar en la misma carpeta donde tienes el archivo "EList".

Sub Copy()
'Act.Por.Dante Amor
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set l1 = ThisWorkbook
    ruta = l1.Path & "\"
    '
    Set l2 = Workbooks.Open(ruta & "OhnDoc.xlsm")
    Set h2 = l2.Sheets.Add
    For Each h In l2.Sheets
        Select Case h.Name
            Case "OhnCF", "OhnSw", "OhnOp"
                h.Delete
        End Select
    Next
    '
    l1.Sheets(Array("OhnCF", "OhnSw", "OhnOp")).Copy Before:=l2.Sheets(1)
    h2.Delete
    l2.Close True
    Application.ScreenUpdating = True
    MsgBox "Copia terminada", vbInformation
End Sub

S a l u d o s . D a n t e   A m o r

Recuerda valorar la respuesta.

Hola Dante,

Muchas gracias por su respuesta, probé con el código que usted me mando, y me sale error en la 6ta línea (Set h2 = l2.Sheets.Add), subraya la línea en amarillo y me dice h2=empty, ¿sera por qué no la definí previamente?

El código que copie al principio funcionaba perfecto, pero pega la información en tres nuevas hojas y no en las existentes.

Ojala pueda ayudarme, gracias de nuevo!

Marcela.

¿Qué versión de excel tienes?

¿Qué mensaje de error te aparece?

Prueba con esta macro:

Sub Copy()
'Act.Por.Dante Amor
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set l1 = ThisWorkbook
    ruta = l1.Path & "\"
    '
    Set l2 = Workbooks.Open(ruta & "OhnDoc.xlsm")
    l2.Activate
    Set h2 = l2.Worksheets.Add
    For Each h In l2.Sheets
        Select Case h.Name
            Case "OhnCF", "OhnSw", "OhnOp"
                h.Delete
        End Select
    Next
    '
    l1.Sheets(Array("OhnCF", "OhnSw", "OhnOp")).Copy Before:=l2.Sheets(1)
    h2.Delete
    l2.Close True
    Application.ScreenUpdating = True
    MsgBox "Copia terminada", vbInformation
End Sub

Si te funciona, recuerda valorar la respuesta.

¡Muchas gracias, Dante!

Anduvo perfecto el

Primer par de veces que la probé, pero ya después me empezó a marcar error, adjunto una foto.

¿Qué cree usted que pueda ser?

Gracias de nuevo por su ayuda!

Marcela.

No me comentaste qué versión de excel tienes.


La macro que te envié tiene esta línea:

For Each h In l2.Sheets

Veo que modificaste la macro y pusiste esto:

For Each h2 in l2.sheets

Prueba con esto:

For Each h In l2.WorkSheets

Hola Dante,


Tiene razón, modifique la línea para probar y me olvidé de cambiarla.

Ahora anda perfecto, pero que modificaciones cree que debería hacerle a la macro para que me limpie las hojas de donde copia la info, ¿y solo agregue en el documento destino?

No se si me explico, ahora si elimino filas del archivo origen, las borra también en el archivo destino. Necesito que, una vez pegada la info en la ultima fila vacía del documento destino, limpie el documento origen, ya que es alimentado por otra macro.

El archivo origen es el puente entre dos documentos, la info que se almacena es temporal, y el archivo destino es el acumulador de información.

Disculpe si lo enredé con la explicación,

Gracias otra vez por su tiempo!,

Marcela.

Lo que pasa es que no explicaste desde un principio lo que necesitabas, lo que entendí era que tenías que copiar las 3 hojas a un libro, pero que no te copiara hojas nuevas.

Podrías valorar esta respuesta, y crea una nueva pregunta, en la nueva pregunta me indicas exactamente qué información te quieres llevar de cada hoja y en dónde exactamente quieres que se pegue, también me tienes que decir si hay fórmulas y quieres un pegado especial de solo valores, en la nueva pregunta si puedes explicarlo con imágenes sería más práctico para poder entender.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas