ActiveX oder COM Komponenten: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(Hinweis für Worddruck) |
Georg (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 4: | Zeile 4: | ||
#include "Gra.ch" | #include "Gra.ch" | ||
#include "Xbp.ch" | #include "Xbp.ch" | ||
#include "Appevent.ch" | #include "Appevent.ch" | ||
#include "Font.ch" | #include "Font.ch" | ||
#include "Inkey.ch" | #include "Inkey.ch" | ||
#include "xbpdev.ch" | #include "xbpdev.ch" | ||
#include "activex.ch" | #include "activex.ch" | ||
#include "xbpdev.ch" | #include "xbpdev.ch" | ||
#define wdPrintFromTo 3 | #define wdPrintFromTo 3 | ||
#pragma Library( "XppUI2.lib" ) | #pragma Library( "XppUI2.lib" ) | ||
#pragma library( "ascom10.lib" ) | #pragma library( "ascom10.lib" ) | ||
Function Drucken( cDoc, cDrucker,oPrinter) | Function Drucken( cDoc, cDrucker,oPrinter) | ||
Local cActivePrinter, aSeite:={}, nCopie:=0 | Local cActivePrinter, aSeite:={}, nCopie:=0 | ||
Local oWord | Local oWord | ||
Local oDoc | Local oDoc | ||
oWord := CreateObject("Word.Application") | |||
IF Empty( oWord ) | IF Empty( oWord ) | ||
MsgBox( "Microsoft Word ist nicht installiert" ) | MsgBox( "Microsoft Word ist nicht installiert" ) | ||
RETURN Nil | RETURN Nil | ||
ENDIF | ENDIF | ||
oWord:visible := .f. // Word unsichtbar! | oWord:visible := .f. // Word unsichtbar! | ||
cActivePrinter := oWord:Activeprinter // aktuellen Drucker feststellen | cActivePrinter := oWord:Activeprinter // aktuellen Drucker feststellen | ||
oWord:Activeprinter:= cDrucker // Neuen Drucker setzen | oWord:Activeprinter:= cDrucker // Neuen Drucker setzen | ||
oWord:documents:Open(cDoc) | oWord:documents:Open(cDoc) | ||
oDoc := oWord:ActiveDocument | oDoc := oWord:ActiveDocument | ||
Do Case | |||
Case AT("filbestandliste2.rtf",cDoc) > 0 | |||
aSeite:=oDlg:pageRangeSelected | |||
oDoc:PrintOut(.f.,Nil,wdPrintFromTo,Nil,alltrim(str(aSeite[1])),alltrim(str(aSeite[2])),Nil,1 ) | |||
Case AT("maengel",cDoc) > 0 | |||
nCopie:=oPrinter:SetNumCopies() | |||
oDoc:PrintOut(.f.,Nil,Nil,Nil,Nil,Nil,Nil,nCopie ) | |||
Otherwise | |||
oDoc:PrintOut(.f.) | |||
EndCase | |||
oWord:Activeprinter:= cActivePrinter // alten Drucker setzen | oWord:Activeprinter:= cActivePrinter // alten Drucker setzen | ||
oDoc:close() | oDoc:close() | ||
Zeile 51: | Zeile 51: | ||
oWord:destroy() | oWord:destroy() | ||
oWord := NIL | oWord := NIL | ||
Return ( NIL ) | Return ( NIL ) |
Version vom 11. November 2013, 09:08 Uhr
Hier ein Beispiel von mir. Es wird eine Datei zum Drucken an Word übergeben. Die Datei "filbestandliste2.rtf" wird gedruckt mit Seite von bis. Die Datei "maengel.rtf" mit Anzahl der eingebenen Kopien.
#include "Gra.ch" #include "Xbp.ch" #include "Appevent.ch" #include "Font.ch" #include "Inkey.ch" #include "xbpdev.ch" #include "activex.ch" #include "xbpdev.ch" #define wdPrintFromTo 3 #pragma Library( "XppUI2.lib" ) #pragma library( "ascom10.lib" ) Function Drucken( cDoc, cDrucker,oPrinter) Local cActivePrinter, aSeite:={}, nCopie:=0 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 Do Case Case AT("filbestandliste2.rtf",cDoc) > 0 aSeite:=oDlg:pageRangeSelected oDoc:PrintOut(.f.,Nil,wdPrintFromTo,Nil,alltrim(str(aSeite[1])),alltrim(str(aSeite[2])),Nil,1 ) Case AT("maengel",cDoc) > 0 nCopie:=oPrinter:SetNumCopies() oDoc:PrintOut(.f.,Nil,Nil,Nil,Nil,Nil,Nil,nCopie ) Otherwise oDoc:PrintOut(.f.) EndCase oWord:Activeprinter:= cActivePrinter // alten Drucker setzen oDoc:close() oWord:Quit() oWord:destroy() oWord := NIL Return ( NIL )