Macro que copie más de 65000 filas

Hace días me mandaste una macro que filtra archivos de una carpeta y me los copia en una hoja abierta, todo bien, pero resulta que tengo que filtrar más o menos 600 archivos y los datos copiados no pasan de la fila 65.000, es decir cuando detecta que esta cerca de ese valor sale mensaje de error.

Se puede hacer algo esta era la macro. La estoy corriendo como libro de excel 97-2003, pero también la grabe como 2010 y ahí si sale error al principio.

Sub Filtrar()
'Por.Dante Amor
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set l1 = ThisWorkbook
Set h1 = l1.Sheets("Hoja1")
h1.Cells.Clear
Set h3 = l1.Sheets("datos")
ruta = l1.Path & "\"
ChDir ruta
'
Set fldr = Application.FileDialog(msoFileDialogFolderPicker)
With fldr
.Title = "Selecciona una carpeta"
.AllowMultiSelect = False
.InitialFileName = ruta
If .Show <> -1 Then Exit Sub
cp = .SelectedItems(1)
End With
'
ChDir cp & "\"
archi = Dir("*.xls*")
Do While archi <> ""
Set l2 = Workbooks.Open(archi)
Set h2 = l2.ActiveSheet
h2.Range("A13:H" & h2.Range("E" & Rows.Count).End(xlUp).Row).AdvancedFilter _
Action:=xlFilterInPlace, _
CriteriaRange:=h3.Range("A1:B3"), Unique:=False
u = h2.Range("E" & Rows.Count).End(xlUp).Row
If u > 13 Then
u1 = h1.Range("E" & Rows.Count).End(xlUp).Row + 1
h2.Rows(14 & ":" & u).Copy h1.Range("A" & u1)
u3 = h1.Range("E" & Rows.Count).End(xlUp).Row
h1.Range("J" & u1 & ":J" & u3) = h2.[C3]
h1.Range("K" & u1 & ":K" & u3) = h2.[C6]
End If
h2.Range("a13:j13").Copy h1.Range("a1:j1")
l2.Close False
archi = Dir()
Loop
Application.ScreenUpdating = True
MsgBox "Terminado"
End Sub

Cordial saludo.

1

1 respuesta

Respuesta
1

Si el archivo lo estás guardando como 2003 pero lo ejecutas en 2010, solamente te va a considerar 65000 filas.

La macro no tiene limitante de filas.

Dam, abro un archivo nuevo , copio la macro y guardo como libro de excel habilitado para macros osea 2010. y apenas le doy ejecutar la macro me sale el error h2.Range("A13:H" & h2.Range("E" & Rows.Count).End(xlUp).Row).AdvancedFilter _
Action:=xlFilterInPlace, _
CriteriaRange:=h3.Range("A1:B3"), Unique:=False

¿Y qué mensaje de error te envía?

Algo como que esta haciendo referencia a un archivo con las de 65300 filas y más de 250 columnas y luego doy en aceptar y me sale el anterior mensaje el que le envíe anteriormente.

No estoy entendiendo que estás haciendo.

Si tienes una archivo 2010 y lo vas a ejecutar en una versión 2003, entonces tienes que guardar el archivo como 2003.

O ya me perdí. Explícame desde el principio qué estás haciendo.

Dam tengo una macro grabada en un archivo de 2010, que recorre una carpeta con archivos 2003-2007. Y filtra los archivos y los pega en el archivo 2010 donde esta la macro. El problema es que cuando se acerca a la línea 65000, sale un error que dice que no puede trabajar con archivos de más de 65000 líneas o 250 columnas y se bloquea. Usted me dice que la macro no tiene que ver y que cual es el error que sale . sale esto:

error h2.Range("A13:H" & h2.Range("E" & Rows.Count).End(xlUp).Row).AdvancedFilter _
Action:=xlFilterInPlace, _
CriteriaRange:=h3.Range("A1:B3"), Unique:=False

Gracias Dam por todo su tiempo

¿Y cuántas líneas ves en tu archivo 2010?

1048000

Puedes ejecutar la macro solamente con un archivo 2003 y me dices exactamente qué dice el mensaje de error

¡Gracias! Dam muchas gracias, no había estado disponible antes para contestarte, lo que hice es que dividí la carpeta en varias, y así nunca me pasa de 65000.

Muchas gracias por tu tiempo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas