Word Datei ausdrucken (mit Druckereinstellungen)

  • Word

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von Steaven.

    Word Datei ausdrucken (mit Druckereinstellungen)

    Hallo zusammen,

    ich bin dabei ein VB-Programm zu schreiben (VB 2010), mit dem es möglich ist, ein Word Dokument auszudrucken.
    Allerdings soll dieses Dokument nicht einfach an den Standart Drucker geschickt werden, sonder an einen zuvor über eine ComboBox ausgewählten Drucker.
    Zusätzlich soll auch noch das Papierfach sowie die Papiergröße wählbar sein.

    Ich habe schon versucht das ganze über ein PrintDocument zu lösen. Hier konnte ich auch den Drucker, das Fach und die Größe einstellen,
    allerdings wird eben nur ein leeres Blatt, oder ein einfacher Text ausgedruckt, nicht aber das gewünschte Dokument.

    Ist es überhaupt möglich ein Word Dokument mit Druckereinstellungen zu versehen?

    Ich hoffe ihr könnt mir helfen!



    Danke!
    Steaven

    PS: Ich bin ein ziemlicher Anfänge in VB ;)
    Nachdem der Post im VBA-Forum steht und mit [Word] getaggt ist:
    Öffne aus deinem Programm die Word-Anwendung und lass diese den Druck vornehmen.
    Da kannst du ALLES einstellen.

    Das setzt allerdings voraus, dass du auf dem Zielrechner auch Word installiert hast.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    So ungefähr:

    Visual Basic-Quellcode

    1. Dim WordApp as Word.Application
    2. Dim Doc as Word.Document
    3. WordApp = New Word.Application
    4. Doc = WordApp.Documents.Open("C:\test.doc")
    5. WordApp.ActivePrinter = "HP Laserjet"
    6. Doc.PrintOut()
    Für weitere Modifikationen kannst du ein Word-Macro aufzeichnen, das dir zeigt, an welchen Objekten rumgeschraubt werden kann.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Also ich habe das ganze mal wie folgt getestet:

    Visual Basic-Quellcode

    1. Private Sub Print_A4(sender As System.Object, e As System.EventArgs) Handles printA4.Click
    2. Dim WordApp As Word.Application
    3. Dim Doc As Word.Document
    4. WordApp = New Word.Application
    5. Doc = WordApp.Documents.Open("C:\testA4.doc", [ReadOnly]:=True)
    6. Doc.Activate()
    7. 'Drucker Auswählen
    8. WordApp.ActivePrinter = "Druckername"
    9. 'Größe Eintstellen (A4 )
    10. WordApp.ActiveDocument.PageSetup.PaperSize = Word.WdPaperSize.wdPaperA4
    11.  
    12. 'Druckfach auswählen (Kasette 1)
    13. WordApp.ActiveDocument.PageSetup.FirstPageTray = Word.WdPaperTray.wdPrinterPaperCassette 
    14. 'Dokument Ausdrucken
    15. Doc.PrintOut()
    16. Doc.Close(SaveChanges:=False)
    17. Doc = Nothing
    18. WordApp.Quit()
    19. End Sub




    Allerdings funktioniert das ganze nur wenn der Drucker in den Druckeinstellungen (Systemsteuerung) ebenfalls so eingestellt ist.
    Wenn dort etwas anderes eingestellt ist gibt der Drucker eine Fehlermeldung (Pieps) und mann muss manuell das richtige Druckfach/Papiergröße auswählen.

    Nun sollte ich die Druckereinstellungen irgendwie anderst ändern, da ich so nicht weiter komme. Weiß irgendjemand Rat?

    Danke!
    Steaven
    Dann hast dasselbe Problem wenn du direkt aus Word mit deinen Spezialeinstellungen druckst?

    Für solche Fälle lege ich eine zweite Drucker-Queue an, die mit den entsprechenden Einstellungen vorbelegt ist und drucke auf diese.

    Evtl. kannst du auch den Drucker auf "Papierwahl automatisch" o.ä. umstellen.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Genau. Wenn ich aus Word drucke habe ich das selbe Problem.

    Das mit der zweiten Drucker-Queue hab ich mir auch schon überlegt.
    Nur sollte dieses Programm später auf mehreren Rechner laufen.

    Ist es nicht möglich die Druckereinstellungen direkt mit VB zu ändern?
    Mit der automatischen Papierwahl funktioniert das ganze auch nicht.

    Danke!
    Steaven
    Du kannst so ziemlich alles was du auf manuellem Wege machen kannst, auch programmgesteuert vollziehen.

    Das Verhalten hängt von Druckertreiber und Drucker ab.
    Wenn du manuell keinen Weg findest, das Piepen abzustellen, wird es auch automatisch nicht gehen.

    Im Zweifel hilft nur Handbuch lesen :(
    Irgendeine Setup-Möglichkeit wird der Drucker schon bereit halten, eine automatische Umschaltung zu erreichen.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --