| |||
![]() 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! |
| |||
Respuesta: Exportar registros de Vb6 a Excel Hola, Gracias por contestar. Acabo de encontrar la solucion. Cita: 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 registrosFunction 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 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: |