Rubrik: COM/OLE/Registry/DLL · Automation | VB-Versionen: VB4, VB5, VB6 | 27.04.07 |
RTF-Text mit WinWord drucken Sofern MS-Word auf dem System installiert ist, lässt sich der Inhalt einer RTF-TextBox bequem durch Fernsteuerung von WinWord drucken oder als Druckvorschau anzeigen | ||
Autor: Dieter Otter | Bewertung: | Views: 11.915 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Immer wieder das leideige Thema: Wie drucke ich den Inhalt einer RTF-TextBox sauber aus oder wie lässt sich eine Druckvorschau realsiieren?
Sofern auf dem System Microsoft Word installiert ist, lässt sich das Ganze bequem durch Fernsteuerung von WinWord erledigen.
Beispiel:
Nachfolgend ein Beispielcode, wie man den Inhalt einer RTF-TextBox in der Seitenvorschau von Microsoft WinWord anzeigen lassen kann.
Private Sub cmdPreview_Click() Dim oWord As Object ' Word.Application ' Text der RichTextBox in die Zwischenablage kopieren Clipboard.Clear Clipboard.SetText RichTextBox1.TextRTF, vbCFRTF ' neue WinWord-Instanz erstellen On Error GoTo ErrHandler Set oWord = CreateObject("Word.Application") With oWord.Application .Visible = True ' neues Dokument hinzufügen .Documents.Add ' Inhalt der Zwischenablage einfügen .Selection.Paste ' Ausdruck in Seitenvorschau .ActiveDocument.PrintPreview End With ' Zwischenablage löschen Clipboard.Clear On Error GoTo 0 Exit Sub ErrHandler: MsgBox "Fehler beim Versuch das Dokument in der " & _ "WinWord-Seitenvorschau anzuzeigen!" & vbCrLf & _ CStr(Err.Number) & " " & Err.Description, vbExclamation + vbOKOnly Clipboard.Clear Set oWord = Nothing End Sub
Erweiterung:
WinWord bietet bekanntlich die Möglichkeit der autom. Seitennumerierung. Also nutzen wir dieses Feature auch, indem wir eine Kopfzeile erstellen und dort das Texfeld für die autom.
Seitennumerierung einfügen:
Private Sub cmdPreview_Click() Dim oWord As Object ' Word.Application ' Text der RichTextBox in die Zwischenablage kopieren Clipboard.Clear Clipboard.SetText RichTextBox1.TextRTF, vbCFRTF ' neue WinWord-Instanz erstellen On Error GoTo ErrHandler Set oWord = CreateObject("Word.Application") With oWord.Application .Visible = True ' neues Dokument hinzufügen .Documents.Add ' Inhalt der Zwischenablage einfügen .Selection.Paste ' Ansicht einstellen .ActiveWindow.ActivePane.View.Type = 3 ' wdPrintView ' Kopfzeile aktivieren .ActiveWindow.ActivePane.View.SeekView = 9 ' wdSeekCurrentPageHeader ' Seitennumerierung rechtsbündig eintragen With .Selection .ParagraphFormat.Alignment = 2 ' wdAlignParagraphRight .TypeText "Seite " .Fields.Add .Range, 33 ' wdFieldPage End With ' Kopfzeile wieder verlassen .ActiveWindow.ActivePane.View.SeekView = 0 ' wdSeekMainDocument ' Ausdruck in Seitenvorschau .ActiveDocument.PrintPreview End With ' Zwischenablage löschen Clipboard.Clear On Error GoTo 0 Exit Sub ErrHandler: MsgBox "Fehler beim Versuch das Dokument in der " & _ "WinWord-Seitenvorschau anzuzeigen!" & vbCrLf & _ CStr(Err.Number) & " " & Err.Description, vbExclamation + vbOKOnly Clipboard.Clear Set oWord = Nothing End Sub
Drucken ohne Seitenvorschau:
Soll das Dokument ohne zusätzliche Seitenvorschau direkt ausgedruckt werden, verwenden Sie die PrintOut-Methode statt "PrintPreview". Im Anschluß kann Word dann auch autom. beendet werden:
... With oWord.Application ... ' Dokument ausdrucken .ActiveDocument.PrintOut ' Dokument schließen .ActiveDocument.Close 0 ' wdDoNotSaveChanges ' Word beenden .Quit 0 ' wdDoNotSaveChanges End With DoEvents Set oWord = Nothing ...