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 de pcampora
1
1
pcampora, DATOS PERSONALES: Nacionalidad: Argentina
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