En este grupo En todos

Foro de Access



exportar desde access 2007 a excel 2007 mas de 100000 registros

sergio
Santiago, Chile
Escrito por Sergio Quezada
el 29/01/2008
Hola, por favor alguien me puede orientar.... Tengo office 2007 y no he logrado exportar a excel (desde access) en forma directa una planilla que tiene más de 100. 000 lineas.... Como lo puedo hacer...?
Pepote Loko
Barcelona, España
Escrito por Pepote Loko
el 30/01/2008

Acces tiene un limite de unas 65000 linias.

Yo lo haria a trozos, aunque quiza existe una manera de que el solo te lo vaya cortando cada 65000 linias

Escrito por Yimy David Romero Pérez
el 30/01/2008

Coloca este codigo en el formulario de exportacion

"*******************************************************************************
"* cmdExportar_Click
"* exporta a Excel datos excedentes de una hoja, distribuyendolos en las hojas
"* necesarias, si es que superan las 65. 536 filas que, como maximo, admite Excel
"* en cada hoja
"* ESH 26/08/06 18:34
"*******************************************************************************

Private Sub cmdExportar_Click()

Dim rst As DAO. Recordset, _
    strSQL As String, _
    i As Long, _
    lngCuenta As Long, _
    xls As Object
   
" matriz de parametros con los campos, encabezados de columna
Const FilasPorHoja = 65536

On Error GoTo cmdExportar_Click_TratamientoErrores

Set xls = CreateObject("Excel. Application")

xls.Workbooks.Open CurrentProject. Path & "miarchivo. Xls"
"xls. Visible = True

" calculo el número de hojas necesarias
lngCuenta = DCount("tucampo", "tutabla") / FilasPorHoja + 1

" compruebo si hay suficientes hojas en el libro para pegar todos los datos
If xls.Worksheets.Count < lngCuenta Then
   " si no hay suficientes, añado las necesarias
   xls.Sheets.Add After:=xls. Worksheets(xls.Worksheets.Count), Count:=(lngCuenta - xls.Worksheets.Count)
End If

" construyo un recordset con los registros a insertar en cada hoja
For i = 0 To lngCuenta
   SysCmd acSysCmdSetStatus, "Hoja" & i + 1
   strSQL = "SELECT tucampo "
   strSQL = strSQL & "FROM tutabla "
   strSQL = strSQL & "WHERE tucampo > " & i * FilasPorHoja & " AND Numero <= " & (i + 1) * FilasPorHoja
  
   Set rst = CurrentDb. OpenRecordset(strSQL, dbOpenDynaset)
   If Not (rst. EOF And rst. BOF) Then
      " pego los datos en la hoja
      xls. Worksheets("Hoja" & i + 1). Range("A1"). CopyFromRecordset rst
   End If
Next i

SysCmd acSysCmdSetStatus, "Listo"

" cierro el recordset
If Not rst Is Nothing Then
   rst. Close
   Set rst = Nothing
End If

" guardo el libro y cierro excel
xls.ActiveWorkbook.Save
xls. Quit
Set xls = Nothing

CmdExportar_Click_Salir:
   On Error GoTo 0
   Exit Sub
  
cmdExportar_Click_TratamientoErrores:

   MsgBox "Error " & Err. Number & " en proc. : cmdExportar_Click de Documento VBA: Form_frmExportar (" & Err. Description & ")"
   Resume cmdExportar_Click_Salir
End Sub       

Sergio Quezada
Santiago, Chile
Escrito por Sergio Quezada
el 31/01/2008
Muchas Gracias... Pero esperaba que me dijeran baja el parche... Xxx... Lo que me planteas en el fodo es bajarlo en varias hojas.... Y me imagino que despues en Excel unirlas en una sola planilla....
voy a intentarlo... Nuevamente... Muchas gracias
Sergio
coloca este codigo en el formulario de exportacion
"*******************************************************************************
"* cmdExportar_Click
"* exporta a Excel datos excedentes de una hoja, distribuyendolos en las hojas
"* necesarias, si es que superan las 65. 536 filas que, como maximo, admite Excel
"* en cada hoja
"* ESH 26/08/06 18:34
"*******************************************************************************
Private Sub cmdExportar_Click()
Dim rst As DAO. Recordset, _
    strSQL As String, _
    i As Long, _
    lngCuenta As Long, _
    xls As Object
   
" matriz de parametros con los campos, encabezados de columna
Const FilasPorHoja = 65536
On Error GoTo cmdExportar_Click_TratamientoErrores
Set xls = CreateObject("Excel. Application")
xls.Workbooks.Open CurrentProject. Path & "miarchivo. Xls"
"xls. Visible = True
" calculo el número de hojas necesarias
lngCuenta = DCount("tucampo", "tutabla") / FilasPorHoja + 1
" compruebo si hay suficientes hojas en el libro para pegar todos los datos
If xls.Worksheets.Count < lngCuenta Then
   " si no hay suficientes, añado las necesarias
   xls.Sheets.Add After:=xls. Worksheets(xls.Worksheets.Count), Count:=(lngCuenta - xls.Worksheets.Count)
End If
" construyo un recordset con los registros a insertar en cada hoja
For i = 0 To lngCuenta
   SysCmd acSysCmdSetStatus, "Hoja" & i + 1
   strSQL = "SELECT tucampo "
   strSQL = strSQL & "FROM tutabla "
   strSQL = strSQL & "WHERE tucampo > " & i * FilasPorHoja & " AND Numero <= " & (i + 1) * FilasPorHoja
  
   Set rst = CurrentDb. OpenRecordset(strSQL, dbOpenDynaset)
   If Not (rst. EOF And rst. BOF) Then
      " pego los datos en la hoja
      xls. Worksheets("Hoja" & i + 1). Range("A1"). CopyFromRecordset rst
   End If
Next i
SysCmd acSysCmdSetStatus, "Listo"
" cierro el recordset
If Not rst Is Nothing Then
   rst. Close
   Set rst = Nothing
End If
" guardo el libro y cierro excel
xls.ActiveWorkbook.Save
xls. Quit
Set xls = Nothing
cmdExportar_Click_Salir:
   On Error GoTo 0
   Exit Sub
  
cmdExportar_Click_TratamientoErrores:
   MsgBox "Error " & Err. Number & " en proc. : cmdExportar_Click de Documento VBA: Form_frmExportar (" & Err. Description & ")"
   Resume cmdExportar_Click_Salir
End Sub       
"

por yimy (Enero 2008)




Abraham Valencia
Computacion e informatica microsoft mv...
Escrito por Abraham Valencia
el 01/02/2008
Pero, si hablamos de office 2007, excel tiene mas de un millon de filas, por lo tanto no deberias tener problemas. DEsde el excel, usa la opcion de "obtener datos externos" y listo. Eso si, tu libro de excel, debe estar guardado como 2007 (xlsx), no en formato compatible (2003-97)

Abraham
Escrito por Ultra
el 20/02/2008

Hola, yo tambien tengo una base de datos en acess 2003 y quiero pasarla a excel de una sola, pero el código que pones me da "error de compilación: No se ha definido el tipo definido por el usuario". A que puede deberse esto?

Por cierto mi base de datos excede 450 000 registros en excel deben ser alrededor de 7 hojas, teniendo en cuenta que trabajo con excel 2003.

Espero que me puedan ayudar, saludos.

Carlos Arturo Ariza Vargas
Ingenieria de sistemas politecnico gr...
Escrito por Carlos Arturo Ariza Vargas
el 19/11/2008

Saludos desde Bogotá D.C. , Colombia:

Para lo que solicita, aunque no indica como realiza la operación directa de exportación, le sugiero que realice una consulta de exportación en la cual pueda dividir la cantidad de registros a exportar en porciones menores a la cantidad que desea, ya que generalmente cuando se superan ciertos montos de registros en access, y si tienen más de 20 columnas o campos de información, suele suceder que la memoria RAM se satura y no es posible realizar la operación, pues se consumen recursos tanto de capacidad de memoria como de procesamiento.

Al crear una consulta, se pueden seleccionar la cantidad de registros indicando en el control de navegación de consulta, cuando se ejecuta, se marca el registro de inicio, ejemplo el 1, y luego se escribe el registro final de la porción a copiar, ejemplo 4999, así se selecciona la cantidad de registros por porciones, luego se aplica copiar y luego pegar en el archivo de destino.

Escrito por Xxx
el 05/12/2008
Baja el parche xxx!



"
Muchas Gracias... Pero esperaba que me dijeran baja el parche... Xxx... Lo que me planteas en el fodo es bajarlo en varias hojas.... Y me imagino que despues en Excel unirlas en una sola planilla....
voy a intentarlo... Nuevamente... Muchas gracias
Sergio
coloca este codigo en el formulario de exportacion
"*******************************************************************************
"* cmdExportar_Click
"* exporta a Excel datos excedentes de una hoja, distribuyendolos en las hojas
"* necesarias, si es que superan las 65. 536 filas que, como maximo, admite Excel
"* en cada hoja
"* ESH 26/08/06 18:34
"*******************************************************************************
Private Sub cmdExportar_Click()
Dim rst As DAO. Recordset, _
strSQL As String, _
i As Long, _
lngCuenta As Long, _
xls As Object

" matriz de parametros con los campos, encabezados de columna
Const FilasPorHoja = 65536
On Error GoTo cmdExportar_Click_TratamientoErrores
Set xls = CreateObject("Excel. Application")
xls.Workbooks.Open CurrentProject. Path & "miarchivo. Xls"
"xls. Visible = True
" calculo el número de hojas necesarias
lngCuenta = DCount("tucampo", "tutabla") / FilasPorHoja + 1
" compruebo si hay suficientes hojas en el libro para pegar todos los datos
If xls.Worksheets.Count < lngCuenta Then
" si no hay suficientes, añado las necesarias
xls.Sheets.Add After:=xls. Worksheets(xls.Worksheets.Count), Count:=(lngCuenta - xls.Worksheets.Count)
End If
" construyo un recordset con los registros a insertar en cada hoja
For i = 0 To lngCuenta
SysCmd acSysCmdSetStatus, "Hoja" & i + 1
strSQL = "SELECT tucampo "
strSQL = strSQL & "FROM tutabla "
strSQL = strSQL & "WHERE tucampo > " & i * FilasPorHoja & " AND Numero <= " & (i + 1) * FilasPorHoja

Set rst = CurrentDb. OpenRecordset(strSQL, dbOpenDynaset)
If Not (rst. EOF And rst. BOF) Then
" pego los datos en la hoja
xls. Worksheets("Hoja" & i + 1). Range("A1"). CopyFromRecordset rst
End If
Next i
SysCmd acSysCmdSetStatus, "Listo"
" cierro el recordset
If Not rst Is Nothing Then
rst. Close
Set rst = Nothing
End If
" guardo el libro y cierro excel
xls.ActiveWorkbook.Save
xls. Quit
Set xls = Nothing
cmdExportar_Click_Salir:
On Error GoTo 0
Exit Sub

cmdExportar_Click_TratamientoErrores:
MsgBox "Error " & Err. Number & " en proc. : cmdExportar_Click de Documento VBA: Form_frmExportar (" & Err. Description & ")"
Resume cmdExportar_Click_Salir
End Sub
"

por yimy (Enero 2008)




"

por sergio (Enero 2008)



Jesus Adan Cruz Zilli
Veracruz, México
Escrito por Jesus Adan Cruz Zilli
el 04/03/2010

Hazlo al reves... Es decir guarda tu tabla de access e importala desde excel y asi se soluciona rapido.....


Saludos

Alberto Galvan
A Coruña, España
Escrito por Alberto Galvan
el 29/04/2010

Jesus eres una Pistola me ayudo tu comentario mas que toda las paja de haya arriba

Gracias

Keneth Walters
Computacion e informatica cibertec, sa...
Escrito por Keneth Walters
el 31/10/2010

"Carlos Arturo Ariza Vargas escribió:

Saludos desde Bogotá D.C. , Colombia:

Para lo que solicita, aunque no indica como realiza la operación directa de exportación, le sugiero que realice una consulta de exportación en la cual pueda dividir la cantidad de registros a exportar en porciones menores a la cantidad que desea, ya que generalmente cuando se superan ciertos montos de registros en access, y si tienen más de 20 columnas o campos de información, suele suceder que la memoria RAM se satura y no es posible realizar la operación, pues se consumen recursos tanto de capacidad de memoria como de procesamiento.

Al crear una consulta, se pueden seleccionar la cantidad de registros indicando en el control de navegación de consulta, cuando se ejecuta, se marca el registro de inicio, ejemplo el 1, y luego se escribe el registro final de la porción a copiar, ejemplo 4999, así se selecciona la cantidad de registros por porciones, luego se aplica copiar y luego pegar en el archivo de destino.

"





Keneth Walters
Computacion e informatica cibertec, sa...
Escrito por Keneth Walters
el 31/10/2010


HOLA A TODOS! TENGO UN GRAN PROBLEMA! QUIERO EXPORTAR DE ACCESS A EXCEL, ESO YA LO TENGO PERO QUIERO HACERLO CON DELIMITADORES..... LO QUE NECESITO QUE ME AYUDEN ES QUE CON EL CODIGO DE ABAJO YO EXPORTO Y ME EXPORTA LA CONSULTA PERO EN UNA TABLA ASI>

NOMBRE CURSO
JUAN PEREZ MATEMATICA
JUAN PEREZ INGLES
JUAN PEREZ CIENCIAS
JUAN PEREZ MATEMATICA
JUAN PEREZ FISICA
LUIS PAZ FISICA
LUIS PAZ MATEMATICA
LUIS PAZ INGLES
LUIS PAZ INGLES


Y LO QUE YO NECESITO ES QUE ME LO EXPORTE ASI>

NOMBRE CURSO
JUAN PEREZ CIENCIAS, FISICA, INGLES, MATEMATICA
LUIS PAZ FISICA, INGLES, MATEMATICA



SE PODRA?



ASI ES COMO EXPORTO A EXCEL :


Código:
Set rst = CurrentDb. OpenRecordset(strsql, dbOpenDynaset)

If Not (rst. EOF And rst. BOF) Then


hoja. Range("A2"). CopyfromrecordSet rst


Dim y As Integer
Dim iNumCols As Integer
iNumCols = rst.Fields.Count
For y = 1 To iNumCols
hoja. Cells(1, y). Value = rst. Fields(y - 1). Name

Next


With hoja. Range("A1"). Resize(1, iNumCols)
. Font. Bold = True
. EntireColumn. AutoFit
. Columns("A:Z"). AutoFit
. Interior. ColorIndex = 37

End With

End If


ESPERO QUE ME PUEDAN AYUDAR

Meliton Patraca Martinez
Coahuila de Zaragoza...
Escrito por Meliton Patraca Martinez
el 30/03/2012

Hola tengo un problema para exportar una tabla de access nombrada (planned_order) a exel pero no me deja por que exede de los 65000 registros esto es resultado de un query o consulta alguien me podria ayudar con esto yo casi no se de programacion les agradeceria me explicaran como poder resolver este problema.


gracias.

Meliton Patraca Martinez
Coahuila de Zaragoza...
Escrito por Meliton Patraca Martinez
el 30/03/2012

Como le hago para poder exportar una tabla de acces con mas de 65000 registros a exel espero me puedan ayudar ya que estar cortando y pegando me quita mucho tiempo por que tengo que haserlo con varias tablas.

gracias.

Escrito por John Alexander Ramirez Leal
el 10/08/2012

Esa solucion esta mucho mas rapida muchas gracias!

Alexander Giraldo
Santiago, Chile
Escrito por Alexander Giraldo
el 26/12/2012

Super esa era la respuesta