Word VBA, beforePrint?
EDIT: bereits kurz nach Fragestellung selbst gelöst mit cancel =true nach Print background.... Verzeihung, war in der Arbeit und konnte erst jetzt eure Antworten sehen. Trotzdem vielen Dank!
Hallo zusammen.
Ich würde gerne einen commandButton kurz vor dem Drucken verkleinern und nach dem Drucken wieder groß anzeigen. Leider wird das Dokument zweimal ausgedruckt.
es soll beim normalen drucken passieren.
der befehl für das Druck event:
Private Sub appWord_DocumentBeforePrint _
(ByVal Doc As Document, _
Cancel As Boolean)
CommandButton1.Height = 0.75
CommandButton1.Width = 0.75
CommandButton2.Height = 0.75 CommandButton2.Width = 0.75
ActiveDocument.PrintOut Background:=False
CommandButton1.Height = 24 CommandButton1.Width = 100 CommandButton1.PicturePosition = fmPicturePositionRightTop
CommandButton2.Height = 24
CommandButton2.Width = 461
End Sub
Das intializieren
Private Sub Document_New()
Set appWord = Word.Application
End Sub
' Private Sub Document_Open() Set appWord = Word.Application
End Sub
3 Antworten
Hallo,
soll der Button ganz verschwinden oder wirklich nur kleiner angezeigt werden? oder ehr gesagt warum möchtest du den Button kleiner machen?
Gruß
Dennis
Wenn du in das Event gelangst, ist der Druck bereits ausgelöst worden. Im Event druckst du dann erneut, was erklärt, weshalb du zwei Ausdrucke hast.
Du solltest innerhalb des BeforePrint-Events Cancel auf True setzen.
Sollte ActiveDocument.PrintOut das Ereignis erneut triggern (ausprobieren), kannst du die Ereignisbehandlung vorübergehend mit EnableEvents = False deaktivieren.
Statt die Buttons klein zu machen, kannst du auch einmal probieren, sie auf unsichtbar zu setzen oder schauen, ob es an ihnen eine Eigenschaft gibt, mit der eingestellt werden kann, ob sie gedruckt werden. Oder du schaust mal in den Druckeinstellungen der Applikation (Seite einrichten oder so), ob man einstellen kann, dass Steuerelemente nicht gedruckt werden.
Dass Cancel auf True gesetzt werden sollte, entspricht genau meinem Ratschlag.
Der Druck wurde ausgelöst, denn sonst wüsste der Interpreter nicht, dass er in das Ereignis BeforePrint einsteigen soll.
Das Auslösen des Drucks geschieht aus der Applikation heraus, zum Beispiel über einen Klick auf das Druckersymbol. Ob der Druck abgebrochen wird oder nicht, ändert nichts daran, dass der Druck ausgelöst wurde.
Ok, dann habe ich deine Aussage nur falsch ausgefasst, entschuldige.
Es kam mir so rüber, als wenn du ausgesagst hast, dass der Druck (Request an den Drucker) bereits ausgelöst wurde.
Dann ignorier meinen Kommentar einfach :)
MFG xGlumi
Du kannst deine eigene Drucklogik schreiben (Ohne dass Word selbst nocheinmal zusätzlich druckt), indem du als erstes die "cancel"-Variable auf "true" setzt.
Anschließend kannst du deinen eigenen Druck ausführen.
MFG xGlumi
Eine kleine Ergänzung zu deiner Antwort:
Das ist nicht ganz richtig.
Wenn man in das Event gelangt, dann befindet man sich noch vor dem Drucken, und kann den eigentlichen Druck-Vorgang mit "cancel = true" stoppen.
MFG xGlumi