La Web del Programador: Comunidad de Programadores
 
    Pregunta:  36 - IMPRIMIR EL CONTENIDO DE UN RICH TEXT BOX
Autor:  Javier
Quisiera saber como puedo imprimir el contenido de un Rich Text Box ya que no consigo hacerlo, os lo agradecería si me mandáis un ejemplo practico. Gracias por adelantado.

  Respuesta:  LUIS MIGUEL GONZALEZ
Hola, aquí te pongo otro ejemplo, sin necesidad de utilizar el control CommonDialog. Te puedo asegurar que imprime el texto con formato (negrita, cursiva...etc).

Private Sub MnuArchivoImprimir_Click()
On Error GoTo Impresora
Printer.Print ""
RichTextBox1.SelPrint (Printer.hDC)
Printer.EndDoc
Exit Sub
Impresora
MsgBox "Error al imprimir."
End Sub

Cuando se utiliza el método SelPrint hay que imprimir siempre antes una línea en blanco.

  Respuesta:  Javier Aparicio
En la siguiente dirección tienes un buen ejemplo
www.vbsquare.com/tips/tip424.html

  Respuesta:  Xavi Vila
Para pode imprimir un Rich Text Box o cualquier otro cuadro de texto, debes poner lo siguiente:
Printer.Print RichTextBox1.Text => El objeto Printer te permite comunicarte con la impresora por defecto, solo tienes que indicarle que es lo que debe hacer. En este caso le indicas que imprima el cuadro de texto. Si omites Printer a esta linea, Visual Basic te imprimira el texto en la pantalla.
Printer.EndDoc => Le indicas a la impresora que ya ha terminado la impresión.
Si tienes alguna duda, no dudes en consultarme. Hasta pronto.

  Respuesta:  Marceliano
La respuesta de Xavi sólo te imprime el texto, pero no los atributos (Fuentes, tamaño, colores...). Hazlo usando el manipulador de la impresora. En este ejemplo te incluyo un control CommDlg para poder elegir las páginas a imprimir. El meollo está en las dos últimas líneas:
CommonDialog1.Flags = cdlPDReturnDC + cdlPDNoPageNums
If richtextbox.SelLength = 0 Then
CommonDialog1.Flags = CommonDialog1.Flags + cdlPDAllPages
Else
CommonDialog1.Flags = CommonDialog1.Flags + cdlPDSelection
End If
CommondDialog1.ShowPrinter
Printer.Print ""
richtextbox.SelPrint Printer.hDC
Printer.EndDoc
(Debes "cebar" la impresora -imprimiendo aunque sea un caracter nulo- antes de imprimir el control rtf. Que te rule :-)