Discussion:
Nach Ausdruck Word schließen
(zu alt für eine Antwort)
Nils J.
vor 20 Jahren
Permalink
Hallo und moin moin,

habe mal wieder eine kurze Frage:
Ich habe in Word zwei Vorlagen mit Textmarken. Zum Ausfüllen dieser Vorlagen
habe ich je ein Formular entworfen, welches beim Erstellen eines neuen
Dokumentes auf Basis dieser Vorlage automatisch angezeigt wird.
Der Anwender füllt dieses Formular aus. Anschließend klickt er auf "ok".
Dann wird geprüft, ob alle Felder ausgefüllt sind. Ist dies der Fall, so wird
der Drucken-Dialog angezeigt, damit der Anwender das Dokument ausdrucken kann.
Sobald der Anwender den Druckauftrag erteilt hat, soll das Dokument
geschlossen werden. Ist kein weiteres Dokument in Word geöffnet, so soll Word
komplett geschlossen werden. Das jeweilige Dokument wird nicht gespeichert,
da es wie gesagt nur als Vorlage für Ausdrucke verwendet wird.

Und nun zum Knackpunkt: In dem einen Dokument funktioniert dies wunderbar.
Im anderen nicht.

Beim Ausführen der nicht funktionierenden Vorlage erhalte ich nach dem
Absenden des Druckauftrags immer die Meldung, dass Word gerade druckt mit der
Frage ob ich Word wirklich beenden möchte. Klicke ich dort auf "ja", so wird
der Druckauftrag abgebrochen.
Die Programmierung ist an dieser Stelle jedoch in beiden Vorlagen identisch.

[snip...]
Me.Hide 'Formular wird versteckt

Dialogs(wdDialogFilePrint).Show 'Druckdialog wird angezeigt

Dim i As Integer
'Prüfen ob mehrere Dokumente geöffnet sind. Wenn nicht, Word beenden
'sonst nur das Dokument schließen.
i = 0
Dim doc As Document
For Each doc In Documents
i = i + 1
Next doc

If i > 1 Then
ActiveDocument.Saved = True
ActiveDocument.Close
Else
ActiveDocument.Saved = True
Application.Quit
End If

[/snip...]

Und als ob das noch nicht genug wäre: Führe ich den Code nach dem Klicken
auf "ok" im Formular Schritt für Schritt aus, so taucht das Problem nicht auf.
Es scheint mir, als ob aus irgendwelchen unerfindlichen Gründen der Code in
dieser Vorlage zu schnell abgearbeitet würde.

Hat jemand eine Idee, woran das liegen kann.
Hab' ich da irgendwo (Denk-)Fehler oder gibt es eine andere / bessere Lösung?

Bin für jeden Tipp und Hinweis sehr dankbar.
Viele Grüße und noch einen schönen Tag
Nils
Thomas Gahler
vor 20 Jahren
Permalink
Hallo Nils
Post by Nils J.
Beim Ausführen der nicht funktionierenden Vorlage erhalte ich nach dem
Absenden des Druckauftrags immer die Meldung, dass Word gerade druckt mit der
Frage ob ich Word wirklich beenden möchte. Klicke ich dort auf "ja", so wird
der Druckauftrag abgebrochen.
Du kannst die '.BackgroundPrintingStatus'-Eigenschaft abprüfen, dann weisst
du ob schon fertig gedruckt wurde oder nicht. Dies muss bei dir aber in
einer Schlaufe erfolgen und das ist nicht besonders sinnvoll, weil es die
CPU-Belastung hochschraubt und der Druck nochlänger nicht beendet werden
kann.

Darum empfehle ich dir das.
Post by Nils J.
Dialogs(wdDialogFilePrint).Show
Dim bFlag As Boolean
bFlag = Options.PrintBackground
Options.PrintBackground = False
Dialogs(wdDialogFilePrint).Show
Options.PrintBackground = bFlag

So wird der Ausdruck synchon erstellt und du musst nicht prüfen ob er schon
fertig ist, da das Makro ers dann weiterläuft, wenn der Ausdruck tatsächlich
erstellt wurde...




--
Thomas Gahler
MVP für WordVBA

- Windows XP (SP1), Office XP (SP3)
Nils J.
vor 20 Jahren
Permalink
Hallo Thomas,

vielen Dank für die schnelle Antwort und die schnelle Lösung. Jetzt tritt
das Problem nicht mehr auf.
Allerdings ist mir noch immer nicht klar, warum das in dem einen Dokument
auch ohne deinen Tipp funktioniert... *grübel*

Trotzdem nochmals besten Dank und einen schönen Tag
Nils
...
Thomas Gahler
vor 20 Jahren
Permalink
Hallo Nils
Post by Nils J.
Allerdings ist mir noch immer nicht klar, warum das in dem einen Dokument
auch ohne deinen Tipp funktioniert... *grübel*
Einfach Glück gehabt, das andere Dokument ist eben schon fertig gedruckt bis
dein Makro Word schliessen will (kleiner, weniger komplex oder was sonst
noch den Druck einfacher macht).

--
Thomas Gahler
MVP für WordVBA

- Windows XP (SP1), Office XP (SP3)
Christian Freßdorf
vor 20 Jahren
Permalink
Hallo Thomas,
Post by Thomas Gahler
bFlag = Options.PrintBackground
Options.PrintBackground = False
Dialogs(wdDialogFilePrint).Show
Options.PrintBackground = bFlag
programmierst Du jetzt im Blocksatz? :-))))
--
Gruß Christian
~~~~~~~~~~~~
Word2000/2003 unter WindowsXP
from one home of vba-snippets
Buchtipp: Egal-Hauptsache lesen
Robert M. Franz (RMF)
vor 20 Jahren
Permalink
Post by Christian Freßdorf
Post by Thomas Gahler
bFlag = Options.PrintBackground
Options.PrintBackground = False
Dialogs(wdDialogFilePrint).Show
Options.PrintBackground = bFlag
programmierst Du jetzt im Blocksatz? :-))))
Hauptsache, das WordPerfect-Flag in den Kompatibilitäts-Optionen ist
gesetzt ... ;-)

Gruss
Robert
--
/"\ ASCII Ribbon Campaign | MS
\ / | MVP
X Against HTML | for
/ \ in e-mail & news | Word
Lesen Sie weiter auf narkive:
Loading...