Hallo Ingo:
ich drucke RTF-Dokumente über Word im Hintergrund
hier die Info. das passende kannst du dir ja raussuchen
Code: Alles auswählen
Function Drucken( cDoc, cDrucker,oDlg)
Local cActivePrinter, aSeite:={}
Local oWord
Local oDoc
oWord := CreateObject("Word.Application")
IF Empty( oWord )
MsgBox( "Microsoft Word ist nicht installiert" )
RETURN Nil
ENDIF
oWord:visible := .f. // Word unsichtbar!
cActivePrinter := oWord:Activeprinter // aktuellen Drucker feststellen
oWord:Activeprinter:= cDrucker // Neuen Drucker setzen
oWord:documents:Open(cDoc)
oDoc := oWord:ActiveDocument
If AT("filbestandliste.rtf",cDoc) > 0
aSeite:=oDlg:pageRangeSelected
oDoc:PrintOut(.f.,Nil,wdPrintFromTo,Nil,alltrim(str(aSeite[1])),alltrim(str(aSeite[2])),Nil,1 )
Else
oDoc:PrintOut(.f.)
EndIf
oWord:Activeprinter:= cActivePrinter // alten Drucker setzen
oDoc:close()
oWord:Quit()
oWord:destroy()
oWord := NIL
Return ( NIL )
/*
Erläuterung
Ausdruck.PrintOut(Background, Append, Range, OutputFileName, From, To, Item, Copies, Pages, PageType, PrintToFile, Collate, FileName, ActivePrinterMacGX, ManualDuplexPrint, PrintZoomColumn, PrintZoomRow, PrintZoomPaperWidth, PrintZoomPaperHeight)
Ausdruck Erforderlich. Ein Ausdruck, der eines der oben genannten Objekte zurückgibt.
Background Variant optional. True, um das Makro fortzusetzen, während Microsoft Word das Dokument druckt.
Append Variant optional. True, um das angegebene Dokument an den Dateinamen anzuhängen, der mit dem OutputFileName-Argument festgelegt wurde. False, um den Inhalt von OutputFileName zu überschreiben.
Range Variant optional. Der Seitenbereich. Dies kann eine beliebige WdPrintOutRange-Konstante sein.
wdPrintAllDocument
wdPrintCurrentPage
wdPrintFromTo
wdPrintRangeOfPages
wdPrintSelection
OutputFileName Variant optional. Wenn True als Wert für PrintToFile festgelegt wurde, legt dieses Argument Pfad und Dateiname der Ausgabedatei fest.
From Variant optional. Die Nummer der Startseite, wenn wdPrintFromTo als Wert für Range festgelegt wurde.
To Variant optional. Die Nummer der letzten Seite, wenn wdPrintFromTo als Wert für Range festgelegt wurde.
Item Variant optional. Das zu druckende Element. Dies kann eine beliebige WdPrintOutItem-Konstante sein.
wdPrintAutoTextEntries
wdPrintComments
wdPrintDocumentContent
wdPrintDocumentWithMarkup
wdPrintEnvelope
wdPrintKeyAssignments
wdPrintMarkup
wdPrintProperties
wdPrintStyles
Copies Variant optional. Anzahl der zu druckenden Exemplare.
Pages Variant optional. Die zu druckenden Seitenzahlen und Druckbereiche, durch Kommas getrennt. Beispielsweise druckt "2, 6-10" die Seite 2 und die Seiten 6 bis 10.
PageType Variant optional. Typ der zu druckenden Seiten. Dies kann eine beliebige WdPrintOutPages-Konstante sein.
wdPrintAllPages
wdPrintEvenPagesOnly
wdPrintOddPagesOnly
PrintToFile Variant optional. True, um die Druckeranweisungen in eine Datei zu schreiben. Stellen Sie sicher, dass ein Dateiname mit OutputFileName festgelegt wird.
Collate Variant optional. Beim Drucken von mehreren Exemplaren eines Dokuments werden bei True alle Seiten des Dokuments gedruckt, bevor mit dem Drucken des nächsten Exemplars begonnen wird.
FileName Variant optional. Der Pfad und Dateiname des zu druckenden Dokuments. Wird dieses Argument ausgelassen, druckt Word das aktive Dokument. Steht nur mit dem Application-Objekt zur Verfügung.
ActivePrinterMacGX Variant optional. Dieses Argument ist nur in der Microsoft Office Macintosh Edition verfügbar. Zusätzliche Informationen über dieses Argument erhalten Sie in der Sprachverzeichnishilfe, die mit der Microsoft Office Macintosh Edition ausgeliefert wird.
// WdPrintOutRange
#define wdPrintAllDocument 0
#define wdPrintSelection 1
#define wdPrintCurrentPage 2
#define wdPrintFromTo 3
#define wdPrintRangeOfPages 4
// WdPrintOutItem
#define wdPrintDocumentContent 0
#define wdPrintProperties 1
#define wdPrintComments 2
#define wdPrintMarkup 2
#define wdPrintStyles 3
#define wdPrintAutoTextEntries 4
#define wdPrintKeyAssignments 5
#define wdPrintEnvelope 6
#define wdPrintDocumentWithMarkup 7
// WdPrintOutPages
#define wdPrintAllPages 0
#define wdPrintOddPagesOnly 1
#define wdPrintEvenPagesOnly 2
*/
:pagerange mußt du dann bei Xbpprintdialog() freigeben.