Rango dinámico ultima fila excel

Que tales amigos buenas tardes.

Alguien que me pueda apoyar con una macro, lo que realiza es abrir un archivo y copiarlo a otro, anteriormente lo hacía, pero me limitaba a cierto rango(Sheets(b). Range("a6 :g7000").Copy Destination:=Workbooks(mybook). Sheets(c). Cells(2, 1)) de celdas lo que intente hacer es que sea dinámico, pero aun no me sale. Tengo el siguiente código:

sub openbook()

application.screenupdating = false

application.displayalerts = false

on error resume next

dim myfile, mybook, a, b, c as string

on error resume next

 

sheets("datos").select

 

 

'sheets(c).cells.clear

myfile = application.getopenfilename("archivos excel (*.xl*), *.xl*")

 

mybook = activeworkbook.name

 

 

b = "sheet1"

c = "datos"

 

workbooks.open filename:=myfile, updatelinks:=0

 

 

 

fullname = split(myfile, application.pathseparator)

a = fullname(ubound(fullname))

'recorro la ultima fila con datos

ultima_fila = worksheets(b).range("a" & rows.count).end(xlup).row

'los datos que necesito copiar inician el la fila 6

numero_datos = ultima_fila - 6

'copio los datos de la hoja sheet1 a hoja datos que es otro libro 'anteriormente lo tenia así: sheets(b). Range("a6 :g7000").copy destination:=workbooks(mybook). Sheets(c).cells(2, 1)

sheets(b).range("a6" & numero_datos).copy destination:=workbooks(mybook).sheets(c).cells(2, 1)

application.cutcopymode = false

sheets(b).range("a6" & numero_datos).pastespecial paste:=xlpastevalues

workbooks(a).close false

 

 

 if myfile = false then exit sub

 

call datos_unicos

call eliminar_datos

 

call eliminar_filas

 

 

 call tabulacion

 

application.screenupdating = true

 

msgbox "los datos se han importado exitosamente", vbinformation

 

end sub

1 Respuesta

Respuesta

Reemplazá tus instrucciones a partir de la línea del comentario, por las que te dejo a continuación:

'recorro la ultima fila con datos   ... a partir de aquí
ultima_fila = Worksheets(b).Range("a" & Rows.Count).End(xlUp).Row
    'los datos que necesito copiar inician el la fila 6
    'numero_datos = ultima_fila - 6    'debiera ser 5 pero aquí no hace falta
'copio los datos de la hoja sheet1 a hoja datos que es otro libro
    'anteriormente lo tenia así:
    'sheets(b). Range("a6 :g7000").copy destination:=workbooks(mybook).Sheets(c).cells(2, 1)
Sheets(b).Range("A6:G" & ultima_fila).Copy 
Workbooks(mybook).Sheets(c).Cells(2, 1).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Workbooks(a).Close False
'aquí siguen tus instrucciones

Algunas notas a tu código:

- Estás repitiendo la instrucción On error... puedes dejar una sola.

- Cuando quieras encontrar la cantidad de filas de datos que empiezan en fila 6 debes restar 5. De todos modos aquí lo que intentas copiar es desde 6 hasta la última fila ocupada.

- La instrucción de pegado, solo deja valores. Pero si también quisieras conservar formatos debieras utilizar esta otra:

Workbooks(mybook). Sheets(c).Cells(2, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats

Sdos y no olvides valorar esta respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas