Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Exportar registros de Vb6 a Excel

Estas en el tema de Exportar registros de Vb6 a Excel en el foro de Visual Basic clásico en Foros del Web. Buenas, tengo hecha una aplicacion en la cual cargo datos en un DataGrid y tengo que exportarlos a Excel. El problema es que son mas ...
  #1 (permalink)  
Antiguo 05/05/2011, 11:11
 
Fecha de Ingreso: marzo-2011
Mensajes: 75
Antigüedad: 13 años, 1 mes
Puntos: 6
Pregunta Exportar registros de Vb6 a Excel

Buenas, tengo hecha una aplicacion en la cual cargo datos en un DataGrid y tengo que exportarlos a Excel. El problema es que son mas de 15 mil registros y cuando le doy click para exportar a Excel empieza el proceso, pero luego de 2 minutos se cuelga. Eh probado con menos registros y funciona perfecto, me da problemas cuando son un monton de registros. Alguna idea? Gracias!
  #2 (permalink)  
Antiguo 06/05/2011, 07:49
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 14 años, 7 meses
Puntos: 47
Respuesta: Exportar registros de Vb6 a Excel

Hola!!
Postea la rutina para chequar
  #3 (permalink)  
Antiguo 06/05/2011, 09:11
 
Fecha de Ingreso: marzo-2011
Mensajes: 75
Antigüedad: 13 años, 1 mes
Puntos: 6
Respuesta: Exportar registros de Vb6 a Excel

Hola, Gracias por contestar. Acabo de encontrar la solucion.

Cita:
Function ExportExcel(ByVal rs, rs2 As ADODB.Recordset)
'Dim oExcel As Excel.Application
'Dim oWBook As Excel.Workbook
'Dim oSheet As Excel.Worksheet
Dim iFila As Long, iCol As Integer, i As Integer

Set oExcel = CreateObject("Excel.Application")
Set oWBook = oExcel.Workbooks.Add
Set oSheet = oWBook.Worksheets(1)
oSheet.Name = "ASIENTO"
Screen.MousePointer = vbHourglass
iFila = 1
iFila2 = 1
iCol2 = 1
iCol = 1
rs.MoveFirst
For i = 0 To rs.Fields.Count - 1
' pone el nombre de los campos en la primera fila
oSheet.Cells(iFila, i + 1) = rs.Fields(i).Name
Next
iFila = iFila + 1
With oSheet
' carga los registros del recordset
.Cells(iFila, iCol).CopyFromRecordset rs
oExcel.Columns(7).Select
oExcel.selection.NumberFormat = "#,##0.00"
oExcel.Columns(12).Select
oExcel.selection.NumberFormat = "0.00"
.Columns.AutoFit ' ajusta el ancho de las columnas

End With

Set oSheet = oWBook.Worksheets(2)
oSheet.Name = "OTROS"
rs2.MoveFirst
For i = 0 To rs2.Fields.Count - 1
' pone el nombre de los campos en la primera fila
oSheet.Cells(iFila2, i + 1) = rs2.Fields(i).Name
Next
iFila2 = iFila2 + 1
With oSheet
' carga los registros del recordset
.Cells(iFila2, iCol2).CopyFromRecordset rs2
.Columns.AutoFit 'ajusta el ancho de las columnas

End With

oExcel.Visible = True
Set oExcel = Nothing
Screen.MousePointer = vbDefault
End Function
La solucion que encontre que es rapida y eficiente fue cargar el Recordset con datos y desde ahi mismo exportar todo a Excel, es mucho mas rapido que hacerlo desde el Datagrid, y por lo que pude comprobar personalmente es que no se tranca exportando mas de 50.000 registros
Este codigo lo modifique a mis necesidades, haciendo que tome 2 Recordset como parametro y dandole formato a algunas celdas y nombre a las hojas.
Me costo bastante encontrar esta solucion, capaz a alguien le pueda servir. Saludos

Última edición por patob; 06/05/2011 a las 09:16 Razón: Falto agregar informacion

Etiquetas: excel, registros, vb6
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:59.