Exportar datos de un MSFlexGrid a Excel o Word

Tengo un proyecto con una superconsulta dinámica en un MSFlexGrid1 pero necesito imprimirlo o exportarlo a excel o word
Gracias
Diego Zapata
[email protected]

1 respuesta

Respuesta
1
Diegoboo,
Crea un formulario en VB con un MSFlexGrid (MSFlexGrid), un TextBox (Text1) y un CommandButton (Command1). Luego agregale al proyecto una referencia a Microsoft Excel 8.0 Object Library (o la version que tengas instalada en la maquina de desarrollo y en los clientes). Por ultimo, pega el siguiente código tal cual:
----------------- EL CÓDIGO EMPIEZA ACÁ -------------------------------------
Private Sub Command1_Click()
generarExcel Text1.Text, MSFlexGrid1
End Sub
Private Sub Form_Load()
'Este es el archivo excel que se genera
Text1.Text = "c:\ejemplo.xls"
MSFlexGrid1.FixedCols = 0
MSFlexGrid1.Cols = 3
Command1.Caption = "Genera Excel"
Form1.Caption = "Genera Excel"
'Datos del flexgrid
MSFlexGrid1.AddItem "1" & vbTab & "a" & vbTab & "x", 1
MSFlexGrid1.AddItem "2" & vbTab & "b" & vbTab & "y", 2
MSFlexGrid1.AddItem "3" & vbTab & "c" & vbTab & "z", 3
End Sub
Public Function generarExcel(strArchivo As String, Vsgrd As MSFlexGrid) As Boolean
On Error GoTo err_generarExcel
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim intFila As Integer
Dim intCol As Integer
generarExcel = False
'Verificar que se haya ingresado un nombre para el archivo.
If Len(Trim(strArchivo)) <= 0 Then
MsgBox "Debe ingresar un nombre para el archivo."
Exit Function
End If
'Verificar que existan filas en el resultado de la consulta
'Se supone que la grilla tiene una fila para los titulos
If Vsgrd.Rows < 2 Then
MsgBox "La consulta está vacia."
Exit Function
End If
'Asignar referencias de objeto a las variables
Set xlApp = New Excel.Application
Set xlBook = xlApp.Workbooks.Add
Set xlSheet = xlBook.Worksheets.Add
'Recorrer la grilla e ingresar los valores a la planilla Excel
For intFila = 0 To Vsgrd.Rows - 1
For intCol = 0 To Vsgrd.Cols - 1
xlSheet.Cells(intFila, intCol).Value = Vsgrd.TextMatrix(intFila, intCol)
Next intCol
Next intFila
'Salvar
XlSheet. SaveAs strArchivo
'Cerrar la hoja de cálculo
XlBook. Close
'Cerrar Excel
XlApp. Quit
'Liberar los objetos
Set xlApp = Nothing
Set xlBook = Nothing
Set xlSheet = Nothing
generarExcel = True
Exit Function
err_generarExcel:
If (Not xlBook Is Nothing) Then
'Cerrar la hoja de cálculo
xlBook.Close False
End If
If (Not xlApp Is Nothing) Then
'Cerrar Excel
xlApp.Quit
End If
'Liberar los objetos
Set xlApp = Nothing
Set xlBook = Nothing
Set xlSheet = Nothing
Select Case Err.Number
Case 1004 'El archivo ya existe y no quiere sobreescribirlo
Case Else 'Cualquier otro error'
MsgBox Err.Number & " - " & Err.Description
End Select
End Function
----------------- EL CÓDIGO TERMINA ACÁ -------------------------------------
En el TextBox se ingresa el archivo excel que se generara. Si se hace clic en el botón se genera el excel con el contenido del MSFlexGrid (en el ejemplo, llenado de forma estática).
Este ejemplo es para Excel, si lo quieres para word o para la impresora, es otra cosa totalmente distinta. El excel que se genera es muy simple, pero se le puede dar cualquier formato, yo le agrego filas, lineas, colores, autofiltro, etc. a los míos.
Cualquier cosa, avisame.
Saludos.
Pablo.
PD: No te olvides de ponerle puntaje a la respuesta.
Pablo el código no me genera el archivo en excel, trataré de organizarlo. Dejame decirte que estoy muy agradecido por el código me sirvió muchísimo estaba muy claro y es fácil de entender. Colega muchas gracias y trataré de organizarlo ok.
Chao
Att: Diego Zapata - Medellin Colombia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas