Seite 1 von 1

Anzahl zu druckender Kopien

Verfasst: So, 08. Dez 2013 12:55
von Koverhage
Wie kann ich die Anzahl der zu druckenden Kopien festlegen ?
(d.h. Anzahl Kopien setzen, damit diese im Druckerdialog angezeigt werden)

Habe mal den Makro aufgezeichnet
Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _
wdPrintDocumentContent, Copies:=5, Pages:="", PageType:=wdPrintAllPages, _
ManualDuplexPrint:=False, Collate:=True, Background:=True, PrintToFile:= _
False, PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _
PrintZoomPaperHeight:=0
und dann
oWord:Printout:Copies := nCopies

bekomme dann diese Fehlermeldung
Xbase++ Version : Xbase++ (R) Version 1.90.355
Betriebssystem : Windows XP 05.01 Build 02600 Service Pack 3
------------------------------------------------------------------------------
oError:args :
-> VALTYPE: C VALUE: Printout
oError:canDefault : J
oError:canRetry : N
oError:canSubstitute: J
oError:cargo : NIL
oError:description : 'PrintOut' ist keine Eigenschaft.
oError:filename : NIL
oError:genCode : NIL
oError:operation : Printout
oError:osCode : -2146822426
oError:severity : 2
oError:subCode : 6500
oError:subSystem : Automation
oError:thread : 1
oError:tries : NIL

Re: Anzahl zu druckender Kopien

Verfasst: So, 08. Dez 2013 13:17
von brandelh
Das muss eine Methode sein, wie sieht denn dein Code aus ?

oWord:PrintOut( ... ) // Parameter müssen in richtiger Reihenfolge angegeben werden.

Re: Anzahl zu druckender Kopien

Verfasst: So, 08. Dez 2013 19:16
von Koverhage
So:
oWord:Printout:Copies := nCopies

aber das ganze ist nicht richtig. Ich möchte die Anzahl der Kopien vor dem Öffnen des Druckerdialogs setzen.

Re: Anzahl zu druckender Kopien

Verfasst: So, 08. Dez 2013 22:33
von AUGE_OHR
Koverhage hat geschrieben:So:
oWord:Printout:Copies := nCopies
aber das ganze ist nicht richtig.
wie Hubert schon sagte ist es eine Method ... wie SaveAs() und hat Parameter
Koverhage hat geschrieben:Ich möchte die Anzahl der Kopien vor dem Öffnen des Druckerdialogs setzen.
http://msdn.microsoft.com/en-us/library ... 37331.aspx

Code: Alles auswählen

oDoc:PrintOut(Background, Append, Range, OutputFileName, From, To, Item, Copies, Pages, PageType, PrintToFile, Collate, FileName, ActivePrinterMacGX, ManualDuplexPrint, PrintZoomColumn, PrintZoomRow, PrintZoomPaperWidth, PrintZoomPaperHeight)

Re: Anzahl zu druckender Kopien

Verfasst: So, 08. Dez 2013 22:57
von brandelh
VB sieht das mit Funktionen und Methoden bei der Syntax nicht so eng ;-)
Offensichtlich braucht es keine abschließenden Klammern.
Aber wenn es ein Objekt wäre der man ein Objekt zuweißt, dann müsste da ein '.' dazwischen.
Die Parameter selbst kann man bei VB auch per Namen übergeben. Wenn man die Klammer also ergänzt:

Code: Alles auswählen

Application.PrintOut( FileName:="" , Range:=wdPrintAllDocument,... )
wird dem Parameter FileName der Wert "" zugeordnet, Range wird zu wdPrintAllDocument ...
Wir müssen jeden Parameter übergeben (eventuell leer), also nimm Jimmy Syntax als Schablone (ein Kommentar eine Zeile über dem Aufruf ;-) )

Re: Anzahl zu druckender Kopien

Verfasst: Mo, 09. Dez 2013 9:00
von Rolf Ramacher
hallo klaus

siehe in Wiki nach. habe ich dort reingestellt

Re: Anzahl zu druckender Kopien

Verfasst: Mi, 11. Dez 2013 9:46
von Koverhage
Hier liegt ein Verständnisproblem vor:
1.Ich drucke über Printout. Das funktioniert auch.
2. Wenn das Dokument zum Bearbeiten geöffnet ist und man dann Drucken möchte, muss man ja über Drucken / Druckersymbol gehen.
3. Der Makro der aufgezeichnet wurde, hat nur den Druckbefehl NACH Aufruf des Druckerdialogs aufgenommen.

Es geht hier um Folgendes: Wie kann ich die Anzahl der Kopien VOR dem Aufruf des Druckerdialogs setzen, damit diese im Druckerdialog angezeigt werden
oder wenn man auf das Druckersymbol klickt, die gewünschte Anzahl Kopien gedruckt werden.

Re: Anzahl zu druckender Kopien

Verfasst: Mi, 11. Dez 2013 11:32
von Rolf Ramacher
das stellst du beim xbpprintdialog() ein.

oder verstehe ich dich jetzt falsch?

Re: Anzahl zu druckender Kopien

Verfasst: Mi, 11. Dez 2013 12:15
von Tom
Printout() ist eine Methode - und "Copies" ist ein Parameter dieser Methode (nämlich der achte). Siehe auch hier:

http://msdn.microsoft.com/de-de/library ... 80%29.aspx

Re: Anzahl zu druckender Kopien

Verfasst: Mi, 11. Dez 2013 15:35
von brandelh
Koverhage hat geschrieben: 2. Wenn das Dokument zum Bearbeiten geöffnet ist und man dann Drucken möchte, muss man ja über Drucken / Druckersymbol gehen.
3. Der Makro der aufgezeichnet wurde, hat nur den Druckbefehl NACH Aufruf des Druckerdialogs aufgenommen.
Es geht hier um Folgendes: Wie kann ich die Anzahl der Kopien VOR dem Aufruf des Druckerdialogs setzen, damit diese im Druckerdialog angezeigt werden
oder wenn man auf das Druckersymbol klickt, die gewünschte Anzahl Kopien gedruckt werden.
wenn ich das richtig verstehe, startest du aus deinem Programm heraus Word mit einem Dokument ...
dieses kann noch in Word bearbeitet werden und dann will der Kunde über Drucken ... x Kopien ... voreingestellt haben ?

Das hat nichts mehr mit deinem Xbase++ Steuerprogramm zu tun, da die Kontrolle ja bei Word liegt.

Re: Anzahl zu druckender Kopien

Verfasst: Mi, 11. Dez 2013 17:19
von Tom
wenn ich das richtig verstehe, startest du aus deinem Programm heraus Word mit einem Dokument ...
Klaus startet Word und ruft die Methode PrintOut() auf, um das Dokument zu drucken. Wenn man Word unsichtbar aufruft, wird dann sofort gedruckt; wenn man es sichtbar aufruft, erscheint der Druckerdialog. Dort möchte Klaus in diesem Fall die Anzahl der Kopien vorwählen, feddisch. Durchaus kein unsinnvolles Anliegen. :wink:

@Klaus: Hast Du mein voriges Posting gelesen?

Re: Anzahl zu druckender Kopien

Verfasst: Mi, 11. Dez 2013 18:24
von Koverhage
Hallo Tom,

Problem richtig erkannt =D>

Noch keine Zeit gehabt, werde mir das aber gleich ansehen.

Danke.

Re: Anzahl zu druckender Kopien

Verfasst: Mi, 11. Dez 2013 18:38
von Koverhage
So gelesen, aber wenn ich das richtig sehe, gibt es keine Möglichkeit das einzustellen.

Re: Anzahl zu druckender Kopien

Verfasst: Mi, 11. Dez 2013 19:34
von Tom
Klar geht das. Das hier ruft Word mit dem Dokument <cText> auf und druckt zwei Exemplare:

Code: Alles auswählen

oWord := CreateObject("Word.Application")
oWord := oWord:DynamicCast(ActiveXObject())
oWord:Visible := .T.
oWord:Documents:Open(<cText>)
oWord:ActiveDocument:PrintOut(,,,,,,,2)
* ...

Re: Anzahl zu druckender Kopien

Verfasst: Mi, 11. Dez 2013 21:42
von Rolf Ramacher
Klaus

wenn du dir mein Beispiel ansiehst, welches ich in Wiki reingestellt habe, dann gehe ich genauso vor. Und bevor Word dann gestartet wird, wird im xbpprintdialog kopie - seite von bis usw. eingestellt und diese werte dann an printout() übergeben.

Re: Anzahl zu druckender Kopien

Verfasst: Mi, 11. Dez 2013 22:37
von Tom
Hallo, Rolf.

Es wäre hilfreich gewesen, wenn Du mal erwähnt hättest, um welchen Eintrag im Wiki es sich handelt. Gemeint ist vermutlich dieser hier:

http://wiki.xbaseentwickler.de/index.ph ... omponenten

Re: Anzahl zu druckender Kopien

Verfasst: Do, 12. Dez 2013 0:31
von AUGE_OHR
Koverhage hat geschrieben:2. Wenn das Dokument zum Bearbeiten geöffnet ist und man dann Drucken möchte, muss man ja über Drucken / Druckersymbol gehen.
meinst du jetzt damit das du, per activeX, ein Word Document öffnest und der User "dann" darin rummachen kann ?
damit ist z.b. "drucken" gemeint was eine Aktion des User ist und einen Event auslöst welchen man auswerten sollte.

wenn du nun den Event zum Drucken empfängst könntest du reagieren und das Fenster des Druck-Dialog suchen / finden***1
und die Controls ansteuern***2 und deine Werte (Druckername, Kopien etc.) setzten.
***1 API FindWindowA
***2 API FindWindowExA
Word_Druck_Class.PNG
Word_Druck_Class.PNG (55.56 KiB) 13506 mal betrachtet