Copiar Hojas con macros en un libro que varia

Y necesito resolverlo con una macro:

Necesito copiar una hoja de un libro (origen) a otro libro (Destino), con las siguientes condiciones

1) El libro origen tiene que ser elegido (osea utilizando este codigo Workbooks.Open Filename:=Application.GetOpenFilename)

2) La hoja a copiar del libro de origen es simbre la misma, es decir una hoja con un nombre especifico ("PROCESO")

3) La hoja copiada debe de ser insertada en un libro destino (que obviamente es el libro activo, o sea, donde voy a ejecutar la macro y no siempre es el mismo libro, cada mes cambia de nombre)

4) La hoja copiada debe de ser insertada con el formato original pero solo valores (que no me copie fórmula solo los valores)

5) Que el libro origen sea cerrado no así el libro destino

Agradecería mucho una respuesta o una orientación para hacerlo, hata el momento he hecho lo siguiente, pero no he logrado que haga lo que quiero.

Sub COPIAR_HOJA1()
Application.ScreenUpdating = False
If MsgBox("Desea Importar Archivo", vbYesNo, "Pregunta") = vbYes Then
    Workbooks.Open Filename:=Application.GetOpenFilename 'Este Macro es para elegir la el libro Origen de datos'
    Sheets("PROCESO").Copy  After:=thisWorkbooks.Sheets(69)
       Application.DisplayAlerts = False
       ActiveWindow.Close

      Else
'Seleccionó NO, no haga nada
End If

Application.ScreenUpdating = True
End Sub

Respuesta
2

Te anexo la macro

Sub CopiarHoja()
'Por.Dante Amor
    Set l1 = ThisWorkbook
    With Application.FileDialog(msoFileDialogFilePicker)
        .Title = "Seleccione archivo de excel"
        .Filters.Add "Archivo xls", "*.xls*"
        .AllowMultiSelect = False
        .InitialFileName = l1.Path
        If .Show Then
            Application.ScreenUpdating = False
            arch = .SelectedItems.Item(1)
            Set l2 = Workbooks.Open(arch)
            l2.Sheets("PROCESO").Copy After:=l1.Sheets(l1.Sheets.Count)
            ActiveSheet.Cells.Copy
            ActiveSheet.Range("A1").PasteSpecial Paste:=xlPasteValues
            l2.Close False
            Application.ScreenUpdating = True
            Application.CutCopyMode = False
            Range("A1").Select
            MsgBox "Copia terminada", vbInformation
        End If
    End With
End Sub

Saludos.Dante Amor

No olvides valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas