Visual Basic - Error al Exportar a Excel de un DataGrid - vb6.0

Life is soft - evento anual de software empresarial
 
Vista:

Error al Exportar a Excel de un DataGrid - vb6.0

Publicado por Rubenssss (3 intervenciones) el 26/09/2008 17:00:17
Buenos días, tengo este problema, bueno implementé este codigo para poder exportar al excel desde un datagrid, el código esta en el menu principal (MDI) donde me permite exportar la primera vez, luego quiero hacerlo de nuevo y me sale de mensaje los siguiente: "Variable de Tipo Object o la variable de tipo With no est.a establecida". Bueno como les comento sólo me sale exportar a la primera vez de ejecutado el programa, a la segunda y sucesivamente sale ese mensaje y no exporta nada, para poder exportar otra cosa tengo q cerrar todo el programa y volver a ejecutar de nuevo, le doy varias vueltas al asunto y no encuentro la solución, espero que me ayuden, muchas gracias. El código es el siguiente:

Private Sub Exportar_Datagrid(Data_Grid As Datagrid, n_Filas As Long)
On Error GoTo ErrSub
'Variables para Excel
Dim Obj_Excel As Object
Dim Obj_Libro As Object
Dim Obj_Hoja As Object
Dim i As Long, j As Long, icol As Long

If n_Filas = 0 Then
MsgBox "No hay datos para exportar a excel": Exit Sub
Else
Set Obj_Excel = New Excel.Application
Set Obj_Libro = Excel.Workbooks.Add
Set Obj_Hoja = Excel.ActiveSheet
'Ponemos la aplicación excel visible
Obj_Excel.Visible = True
'Recorre el Datagrid
icol = 0
For i = 0 To Data_Grid.Columns.Count - 1
If Data_Grid.Columns(i).Visible Then
icol = icol + 1
'Caption de la columna
Obj_Hoja.Cells(1, icol) = Data_Grid.Columns(i).Caption
For j = 0 To n_Filas - 1
'asigna el valor a la celda del Excel
Obj_Hoja.Cells(j + 2, icol) = _
Data_Grid.Columns(i).CellValue(Data_Grid.GetBookmark(j))
Next
End If
Next
'Opcional : colocamos en negrita y de color rojo los enbezados en la hoja
Obj_Hoja.Rows(1).Font.Bold = True
Obj_Hoja.Rows(1).Font.Color = vbBlue
'Autoajustamos
Obj_Hoja.Columns("A:Z").AutoFit
'Guardamos el archivo
Obj_Excel.ActiveWorkbook.SaveAs FileName:=App.Path & "Exportados" & TABLA & "_" & FechaTex(Date) & ".xls"
'Si ocultas te la hoja de excel hayq ue visualizarla sino se queda la instancia abierta
Obj_Excel.Application.Visible = True
Set Obj_Hoja = Nothing
Set Obj_Libro = Nothing
Set Obj_Excel = Nothing
End If
'Eliminamos las variables de objeto excel
Set Obj_Hoja = Nothing
Set Obj_Libro = Nothing
Set Obj_Excel = Nothing
'Error
ErrSub:
Set Obj_Hoja = Nothing
Set Obj_Libro = Nothing
Set Obj_Excel = Nothing
MsgBox Err.Description, vbCritical
On Error Resume Next
End Sub

Donde llamo desde otro formulario hijo a ese procedimiento con:
Call Exportar_Datagrid(FrmMemos.Data1, FrmMemos.Data1.ApproxCount)

Y como ya saben sólo exporta la primera vez....Help me!!! gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Error al Exportar a Excel de un DataGrid - vb6.

Publicado por daniel (145 intervenciones) el 29/09/2008 21:09:25
Te pregunto vos envias el datagrid. a lo mejor yo no lo uso bien a ese control sino que lo uso para mostrar el resultado de un Recordset. o sea uso la famasa
rs.open "Loquesea"
si el rs tiene datos
set datagrid1.datasource =rs
obviamente que el recordset esta desconectado (Del lado del cliente, y siempre y cuando no sea demasiada grande la cantidad de información, por eso me olvido del select * from, pero mas alla de esto, cuando paso a la funcion le paso el recordset y no el datagrid, para no complicarme demasiado, luego si le paso a excel los valores en las celdas pero referenciando al nombre del campo del recordset
ex.activesheet.cells(i,1)=rs!Algo
a lo mejor es mejor de la forma que lo usas vos, pero la verdad nunca lo vi usado de esa forma.
Saludos y disculpa si no fue de ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error al Exportar a Excel de un DataGrid - vb6.

Publicado por Rubenssss (3 intervenciones) el 29/09/2008 21:33:39
Gracias Daniel por tus comentarios, el tema en donde me complico es que para poder pasarle la sentencia sql y exportar son de varias consultas en los distintos formularios, entonces cada uno tendria su propia sentencia y programar para cada una me tomaria tiempo, no lo he intentado por el tiempo, entonces decidi que todos los formularios tengan el mismo nombre de datagrid y exportar del datagrid al excel para demorar menos en su programación, lo cual me haria repetir el codigo Me.Data1 y ya no pasar a la función exportar cada sentencia sql, me dejo entender? y esa es mi complicación porque la función si me exporta pero sólo la primera vez, la segunda vez me sale mensaje de error y para volver a exportar cualquier otra consulta, tengo que terminar el programa y volver a ejecutarlo y eso no es lo esperado. Espero mas repuestas, sugerencias y/o modificaciones en el codigo ó forma para poder solucionar mi dilema, gracias nuevamente!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error al Exportar a Excel de un DataGrid - vb6.

Publicado por Daniel (145 intervenciones) el 30/09/2008 21:24:05
Mira, sigo sin entender mucho, seguramente es mi error no interpretarte, pero acordate que el datagrid, es un contenedor del recordset, a lo mejor te convendria usar otro control que no sea el datagrid y que sea como una matriz ejemplo MSFlexGrid1, a este le agregas los valores como a una matriz, que ya tenes esos valores del recordset y por ende los podes agregar, y despues pasas a excel los valores que tenes en este MSFlexGrid1, si es lo que entendí, sino disculpa por no interpretar bien tu problema
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error al Exportar a Excel de un DataGrid - vb6.

Publicado por Rogelio (1 intervención) el 27/03/2010 22:14:17
Hola Rubenssss, ahora tengo el mismo problema que tuviste hace casi dos años, me atrevo a escribirte para ver si los solucionaste y me puedes auxiliar, mi rutina exporta de un recordset y lo hace bien la primera vez, pero no la segunda, tengo que reiniciar mi programa y ahora si me exporta mi segunda consulta ¿Como solucionaste tu problema?

Muchas gracias por tu ayuda

Rogelio
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar