2 Dokumente in Word mit VBA drucken

  • Word

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Sebastian.Pape.

    2 Dokumente in Word mit VBA drucken

    Hallo zusammen,

    ich bräuchte leider eure Hilfe || . Und zwar soll ich eine Ereignisbehandlung erstellen, das auf das Ereignis Drucken reagiert. Dabei soll ein neues Dokument geöffnet werden und quasi als Deckblatt ausgedruckt werden
    Bisher hab ich es nur geschafft das entweder das Deckblatt oder das aktuelle Dokument gedruckt wird jedoch nicht beide zusammen. Mir fehlt die Verbindung Drucken mit dem neu geöffneten und dem aktiven Dokument. Ich hoffe Ihr könnt mir helfen.
    Vielen Dank schon mal im Vorraus.

    Gruß Sebastian

    Anbei der bisherige Code

    Visual Basic-Quellcode

    1. Public Sub FilePrint()
    2. Application.Documents.Add
    3. Application.Selection.TypeText "Deckblatt"
    4. Application.Selection.TypeParagraph
    5. Application.Selection.TypeText "Bitte reichen Sie den Ausdruck an " & Application.UserName & " weiter"
    6. Application.ActiveDocument.PrintOut
    7. End Sub

    Sebastian.Pape schrieb:

    Application.Documents.Add
    Gibt dir ein Objekt des Typs Dokument zurück.
    (glaube ich wenigstens).
    Dann hast du zwei Dokumente. Das bisher aktive (ActiveDocument) und das neue.
    Die kannst du beide nacheinander ausdrucken.

    Visual Basic-Quellcode

    1. ​Set Doc2=ActiveDocument
    2. Set Doc1 = Documents.Add
    3. '...
    4. Doc1.Printout
    5. Doc2.Printout

    Du druckst damit zwei Dokumente.
    Wahrscheinlich kommen die auch nacheinander im Drucker an.
    Gesichert ist das aber nicht.
    Es könnte sich z.B, ein anderer Druckauftrag dazwischen drängen.

    Wenn du's ganz richtig machen willst, erzeugst du ein neues Dokument mit Deckblatt und fügst danach dein "echtes" Dokument an.
    Dann genügt ein Druckauftrag.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Bodycount schrieb:

    bitte verwende nicht mehr das Selection-Object
    Für Excel ist das auch mein typischer Vorschlag.
    In Word gestaltet sich das meiner Erfahrung nach wesentlich schwieriger.
    Gut, in dem speziellen Fall einer leeren Datei könnte man noch mit Document.Paragraphs(1).Range arbeiten.
    Aber im allgemeinen funktioniert Range-Adressierung nur bequem, wenn das Dokument mit Bookmarks versehen ist.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Sebastian.Pape schrieb:

    öffne ich ein neues Dokument das ja dann das aktive Dokument ist.
    Deswegen sollst du dir ja vorher den Pointer auf das alte Dokument sichern, damit du beide Dokumente ansprechen kannst.

    Sebastian.Pape schrieb:

    Doc1 und Doc2 die Variablen nicht definiert sind
    Was spricht dagegen, das zu tun?
    Dim Doc1 As Document, Doc2 As Document
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    So habs jetzt doch gelöst bekommen. Ich habe jetzt mit 2 Druckauftäge geschrieben.

    Visual Basic-Quellcode

    1. Public Sub PrintOut()
    2. Application.PrintOut
    3. Application.Documents.Add
    4. Application.Selection.TypeText "Deckblatt"
    5. Application.Selection.TypeParagraph
    6. Application.Selection.TypeText "Bitte reichen Sie den Ausdruck an " & Application.UserName & " weiter"
    7. Application.PrintOut
    8. Application.ActiveDocument.Close wdDoNotSaveChanges
    9. End Sub

    Danke trotzdem für die schnelle Antworten und Hilfe
    Gruß
    Sebastian