Pasar datos de un archivo excel a otro

Perdona que te moleste otra vez, estoy intentando pasar datos de un archivo excel a otro, pero me da un error 424 se requiere un objeto. Este es el código

Sub extraerdatos()
Dim archivo As Variant
u = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row

'abro un archivo
archivo = Application.GetOpenFilename("Archivos Excel (*.xl*), *.xl*", , , , True)
'copio desde E1 a Fx(siendo x la ultima fila con datos
archivo. Activesheet.Range("E1:F" & u).Copy ->aquí es donde me da el error 424 no sé si da más errores porque no sigue el programa, se para en esta línea
'cierro el archivo
archivo.Close savechange:=False
'pego en la hoja actual
ActiveSheet. Paste
'selecciono una celda para pegar el contenido del siguiente libro a elegir
Range("A1").Select
End Sub

1 respuesta

Respuesta
1

H o l a: El error es porque tu variable "archivo" no es un objeto.

Te anexo la macro actualizada, en la macro te puse unos comentarios para diferenciar una variable de un objeto.

Es importante que en la siguiente instrucción, pongas el parámetro "False", si lo dejas con True, es como si abrieras varios archivos y para eso hay que poner otras instrucciones, pero en tu caso solamente vas a abrir un archivo, por eso debe ser False:

Application.GetOpenFilename("Archivos Excel (*.xl*), *.xl*", , , , False)

La macro actualizada

Sub extraerdatos()
'Act.Por.Dante Amor
    'selecciono un archivo y guardo el nombre del archivo en la variable "var_nombre"
    var_nombre = Application.GetOpenFilename("Archivos Excel (*.xl*), *.xl*", , , , False)
    'si no seleccioné un archivo entonces se sale de la macro
    If var_nombre = False Then Exit Sub
    '
    'abro el archivo y establezco el libro en el objeto "obj_archivo"
    Set obj_archivo = Workbooks.Open(var_nombre)
    '
    'copio desde E1 a Fx(siendo x la ultima fila con datos
    u = obj_archivo.ActiveSheet.UsedRange.Rows(obj_archivo.ActiveSheet.UsedRange.Rows.Count).Row
    obj_archivo.ActiveSheet.Range("E1:F" & u).Copy
    'cierro el archivo
    obj_archivo.Close False
    'pego en la hoja actual, en la celda A1
    Range("A1").Select
    ActiveSheet.Paste
End Sub
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

¡Gracias! mi intención era abrir varios archivos y copiar desde la columna e1 hasta fx e ir pegando los datos en otro lado uno tras otro en la misma columna. por ejemplo el primer archivo ocupa desde la a1-a21, el otro seria de la a22-a33 y asi sucesivamente.

Pero lo vi complicado y lo hago de 1 en 1.

Para abrir varios archivos exiten varias maneras, te presento 2, la primera, seleccionas los archivos; la segunda, que se utilicen todos los archivos que están en una carpeta.

Crea una nueva pregunta y me dices cuál de las 2 opciones quieres y te creo la macro. En el desarrollo de la pregunta escribe: "para Dante Amor"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas