Importar hojas de un excel a otro VBA

Tengo una macro que me ayuda a importar una hoja en específico de un libro a otro. Sin embargo, me gustaría saber como puedo hacer para que en lugar de traerme una hoja en especifico, yo pueda seleccionar varias hojas y que se peguen en el otro libro, en la hoja Data una debajo de la otra. La razón es porque quiero ir actualizando, semana a semana, una base de datos con información acumulativa

Sub LoadInfo()
Dim MyResultados As String  'donde guardo el nombre del libro de resultados
Dim MyInfo As String        'donde guardo el nombre del libro que voy a abrir
Dim InfoPath As String      'donde se guada la información de la ubicacion del libro de info
Application.ScreenUpdating = False          'para que no se vea en pantalla la apertura del libro (tarda menos)
    ClearData       'función para limpiar la información de Data
    MyResultados = ThisWorkbook.Name
    InfoPath = Application.GetOpenFilename    'display para abrir libro de info
        Workbooks.Open Filename:=InfoPath     'abro el libro
    MyInfo = ActiveWorkbook.Name
        Worksheets("Info").Select           'copiando información
            Range("A1:G20000").Select
                Selection. Copy
        Workbooks(MyResultados). Activate 'pegado de información
            Worksheets("Data"). Activate
                Range("A1"). Activate
                    ActiveSheet. Paste
        Worksheets("Resultados"). Activate 'para volver a la hoja de resultados
        Application.DisplayAlerts = False   'para que no salte cuadro de diálogo de clipboard
        Workbooks(MyInfo).Close savechanges = False 'cierro el libro de info
End Sub

1 respuesta

Respuesta
1

Al final lo resolví de esta manera, adaptado para lo que lo necesito

Sub LoadInfo()
Dim MyResultados As String  'donde guardo el nombre del libro de resultados
Dim MyInfo As String        'donde guardo el nombre del libro que voy a abrir
Dim InfoPath As String      'donde se guada la información de la ubicacion del libro de info
Set h1 = Sheets("Data")
Set h2 = Sheets("Temp")
Set h3 = Sheets("Base calculo")
If MsgBox("¿Desea actualizar la base de datos?", vbQuestion + vbYesNo, AddIn) = vbNo Then Exit Sub
Application.ScreenUpdating = False          'para que no se vea en pantalla la apertura del libro (tarda menos)
    ClearData       'función para limpiar la información de Data
    MyResultados = ThisWorkbook.Name
    InfoPath = Application.GetOpenFilename    'display para abrir libro de info
        Workbooks.Open Filename:=InfoPath     'abro el libro
    MyInfo = ActiveWorkbook.Name
    Muestra_Hojas
        For Each hoja In ActiveWorkbook.Sheets
            hoja.Select                         'copiando información
            Range("C1:F50").Select
                Selection.Copy
        Workbooks(MyResultados).Activate    'pegado de información
            u1 = h1.Range("C" & Rows.Count).End(xlUp).Row
            h1.Range("C" & u1).PasteSpecial Paste:=xlPasteValues
        Workbooks(MyInfo).Activate
        Next
'Desde aqui se aplican la actualización del acumulado
u1 = h2.Range("A" & Rows.Count).End(xlUp).Row
h2.Range("A2" & ":E" & u1).Copy
u2 = h3.Range("A" & Rows.Count).End(xlUp).Row
h3.Range("A" & u2 + 1).PasteSpecial xlValues
h2.Range("F2" & ":AB" & u1).Copy
h3.Range("P" & u2 + 1).PasteSpecial xlValues
h3.Range("F2:O11").Copy
h3.Range("F" & u2 + 1).PasteSpecial xlPasteFormulas
Application.CutCopyMode = False
        Workbooks(MyResultados).Activate
        Worksheets("Acumulado").Activate   'para volver a la hoja de resultados
        Application.DisplayAlerts = False   'para que no salte cuadro de diálogo de clipboard
        Workbooks(MyInfo).Close SaveChanges = False 'cierro el libro de info
Application.ScreenUpdating = True
End Sub
Private Function ClearData()
        Worksheets("Data").Range("C1:F20000").ClearContents
End Function
Private Function Muestra_Hojas()
Dim numero As Byte
numero = Sheets.Count
    For i = 1 To numero
    Sheets(i).Visible = True
    Next
End Function

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas