Abrir un libro y copiar toda la información a mi libro actual

Estoy tratando de abrir un libro a través de vba con un botón, el botón te pide busques el libro con la información y luego que se selecciona debe crear una hoja temporal para copiar todos los datos del libro seleccionado a la hoja temporal

Hasta ahora llevo lo siguiente, pero no me copia ni tampoco pega

Private Sub CargaInfo_Click()
Dim RutaArchivo As String
Dim nombre As String 'nombre de la hoja activa
Dim nombre1 As String 'nombre de la hoja activa
Dim RangoDatos As Range
Dim uFila As Long
On Error Resume Next
RutaArchivo = Application.GetOpenFilename(Title:="Carga Info Proveniente De Laudus", _
                                            filefilter:="Excel Files (*.xlsx), *.xlsx")
'MsgBox RutaArchivo
If RutaArchivo <> "Falso" Then
    nombre = ActiveWorkbook.Name
    Workbooks.Open RutaArchivo
    nombre1 = ActiveWorkbook.Name
    Set RangoDatos = Workbooks(nombre1).ActiveSheet.UsedRange
    hoja = thiswokbook.ActiveSheet
    uFila = hoja.Range("A" & Rows.Count).End(xlUp).Row
    hoja.Range("A1:H" & uFila).Copy
'    Sheets(1).Select
    'MsgBox hoja
    Workbooks(nombre).Activate
    Sheets.Add.Name = "temporal"
    Sheets("temporal").Activate
    Columns(2).EntireColumn.Insert
End If
End Sub

Si alguno pudiera echarme una mano, seria maravilloso.

1 respuesta

Respuesta
1

Te dejo la macro ajustada y comentada para que puedas hacer el seguimiento y modificar eventualmente algunos detalles que remarco a continuación:

Private Sub CargaInfo_Click()
Dim RutaArchivo As String
Dim nombre As String 'nombre de la hoja activa
Dim nombre1 As String 'nombre de la hoja activa
Dim RangoDatos As Range
Dim uFila As Long
On Error Resume Next
RutaArchivo = Application.GetOpenFilename(Title:="Carga Info Proveniente De Laudus", _
                                            filefilter:="Excel Files (*.xlsx), *.xlsx")
If RutaArchivo <> "Falso" Then
    nombre = ActiveWorkbook.Name      'nombre del libro activo
    Workbooks.Open RutaArchivo
    nombre1 = ActiveWorkbook.Name     'nombre del libro que se abre
    Set RangoDatos = Workbooks(nombre1).ActiveSheet.UsedRange   'rango completo que se copiará
         'hoja = ThisWorkbook.ActiveSheet
         'uFila = hoja.Range("A" & Rows.Count).End(xlUp).Row
        ' hoja.Range("A1:H" & uFila).Copy
    RangoDatos.Copy
    Workbooks(nombre).Activate       'se activa el libro destino
    Sheets.Add.Name = "temporal"     'se agrega una hoja. queda como hoja activa
    ActiveSheet.Paste                 'se pega la copia a partir de A1
         'Columns(2).EntireColumn.Insert
    Workbooks(nombre1).Close False    'opcional: se cierra el libro buscado sin guardar cambios
End If
End Sub

Como obtenés el rango completo con Set... entonces supuse que ese sería el RangoDatos a pegar. Sino, omití esas instrucciones y solo obtené el rango que necesites con las variables hoja y uFila con las instrucciones que mantuve pero las dejé inhabilitadas. Atención que tenías un error de sintaxis en la línea hoja =

Recordá que así como está se pega a partir de A1. Si necesitas que sea a partir de otra ubicación primero seleccioná la primer celda de destino antes de la instrucción Paste. Por ej:

    ActiveSheet.[B3].Select
    ActiveSheet. Paste 'se pega la copia a partir de B3

Sdos y no olvides valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas