Hola pana,
mira hay varias formas, puedes usar el metodo PAINTPICTURE(dibujar panmtalla), aqui hay un link:
http://www.vbusers.com/code/codeget.asp?ThreadID=267&PostID=1&NumReplies=0Aqui hay un codigo de un ejemplo muy bueno:
http://www.adit.co.uk/html/printing_grids.htmlPuedes usar el REPORTE de visual tambien, en fin hay varias formas pana, aqui te pongo un codigo para hcerlo:
------------------------------------------------------------------------------------------------------------
"**************IMPRIMIR MSFLEXGRID*********************************
Public Sub MSFlexGridPrint(gridQuery As Control)
Dim C As Integer
Dim CC As Integer
Dim TABB As Integer
For C = 1 To gridQuery.Rows - 1
TABB = 20
If Printer.CurrentY + Printer.TextHeight(gridQuery.Text) > Printer.ScaleHeight - 600 Then
Printer.NewPage
End If
gridQuery.Row = C "LINEA ACTIVA??
For CC = 0 To gridQuery.Cols - 1
gridQuery.Col = CC "Set the current column
"ENVIA EL CAMPO A LA LINEA IMPRESORA Y ADICIONA EL TAB.
Printer.Print Trim$(gridQuery.Text); Tab(TABB);
TABB= TABB+ 20 "INCREMENTO EL VALOR DE TAB
Next
"DESPUES DE HABER IMPRESO CADA COLUMNA UN PRINTER.PRINT SIN
"SEMICOLON( ; ) ENVIARA LA LINEA A LA IMPRESORA E INICIARA UNA NUEVA
Printer.Print
Next
End Sub
---------------------------------------------------------------------------------------------------------
De este ejemplo puedes hacer varias modificaciones,pero si quieres algo aun mas simple intenta este:
---------------------------------------------------------------------------------------------------------
"******IMPRIMIR EL CONTENIDO DE CONTROLES MSFLEXGRID
"******* DE FORMA RAPIDA Y SENCILLA
Printer.PaintPicture MSFlexGrid_Name.Picture, 0, 0
Printer.EndDoc
---------------------------------------------------------------------------------------------------------
"SI QUIERES USAR EL LARGO COMPLETO DE LA PAGINA DE IMPRESION
" NOTIFICALO ANTES DE IMPRIMIR,USANDO SUS PROPIEDADES.... ASI:
---------------------------------------------------------------------------------------------------------
"******IMPRIMIR EL CONTENIDO DE CONTROLES MSFLEXGRID
"******* DE FORMA RAPIDA Y SENCILLA*
Dim old_width as Integer
MSFlexGrid_Name.width=printer.width
Printer.PaintPicture MSFlexGrid_Name.Picture, 0, 0
Printer.EndDoc
MSFlexGrid_Name.width=old_width
---------------------------------------------------------------------------------------------------------
Tambien puedes pasarlo a excel para imprimirlo comunmente, para eso esta el Flexgrid a excel:
FlexGrid_To_Excel {Nombre delfFlexGrid, Numerodelineasaimprimir, Numerodecolumnasaimprimir, 2}
ejemplo:
FlexGrid_To_Excel MSFlexGrid1, 12, 8, 2
si usas esta opcion que te comento ,acuerdate de adicional la libreria "microsoft excel x.0 object library" para que no te de error de compilacion:
"Public Sub FlexGrid_To_Excel(TheFlexgrid As MSFlexGrid, _
TheRows As Integer, TheCols As Integer, _
Optional GridStyle As Integer = 1, Optional WorkSheetName _
As String)"
Para imprimirlo puedes usar el metodo .PRINTOUT de excel para imprimirlo directamente desde VB ...
En fin, probando estos y otros metodos , puedes elegir el que mas necesites realmente, solo son unas cuantas opciones.
Un abrazo pana