Click here to Skip to main content
Licence CPOL
First Posted 9 Jun 2007
Views 58,006
Downloads 856
Bookmarked 24 times

Printing a Word Document using Word Automation

By | 9 Jun 2007 | Article
Shows a simple way to print a Word document

Introduction

I began my journey down Word Automation and found good articles here. Unfortunately, I hit a big road block: I couldn't choose which printer to print to. I could only print to whichever printer was the ActivePrinter when the Word object was created. Everywhere I looked I was told that all you had to do was:

WordApp.ActivePrinter = "Printer name"

This didn't work for me, it would just hang. I believe that this is due to different versions, and some might have never had the problem I did, but if you're like me, then read on and you won't have to deal with all the headache I had. Hope it helps.

Background

Word Automation is simply being able to use another application within another. Sounds simple enough, but it can get ugly pretty fast and I have found very few resources for when you hit a problem.

Using the Code

Attached is a VB.NET project that allows you to print a specified Word document. The code is given here.

Make sure to add a reference to the Word Object Library found in the COM tab. (To add a reference, right-click on project and select Add Reference.)

Declare variables on show file and print dialogs to get user input:

Dim f As New OpenFileDialog
Dim p As New PrintDialog
Dim app As Word.Application
Dim doc As Word.Document

'Open file and print dialogs to get desired document and printer
If f.ShowDialog = Windows.Forms.DialogResult.OK Then
     If p.ShowDialog = Windows.Forms.DialogResult.OK Then

Create a Word application object:

 'Create instance of Word Application
                app = New Word.Application

This is where you need to use the WordBasic property to set the active printer.

'Set Printer
 app.WordBasic.FilePrintSetup(Printer:=p.PrinterSettings.PrinterName, _
    DoNotSetAsSysDefault:=1) 

The rest of the code simply opens the document, prints it, and quits the Word application:

        'Set filename to object type
        Dim filename As Object = f.FileName
        Dim m As Object = System.Reflection.Missing.Value

        'Open document
        doc = app.Documents.Open(filename, m, m, m, m, m, m, m, m, m, m, m)

        'Print document
        app.PrintOut()

        'Close document
        app.Documents.Close()

        'Quit word application
        app.Quit()

        'Release 
        app = Nothing
    End If
End If 

The most important line in the above code is this:

'Set Printer
app.WordBasic.FilePrintSetup(Printer:=p.PrinterSettings.PrinterName, _
    DoNotSetAsSysDefault:=1) 

For those who need the above in C#, here it is:

//Set Printer 
object wb = app.WordBasic;

//first arg is a printer name
object[] argValues = new object[] {p.PrinterSettings.PrinterName, 1}; 
String [] argNames = new String [] {"Printer","DoNotSetAsSysDefault"};

wb.GetType().InvokeMember("FilePrintSetup",BindingFlags.InvokeMethod,null, 
    wb,argValues,null,null,argNames);

I hope this helps people, because it really got me out of a bind.

History

  • 9th June, 2007: Initial post

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

josepaulino



United States United States

Member



Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
QuestionGood Article josepaulino....but haiving One Que ? Pinmemberkoolprasad200320:33 8 Oct '10  
GeneralMy vote of 5 Pinmemberkoolprasad200320:26 8 Oct '10  
GeneralThanks alot PinmemberDurgaPNaidu1:11 21 Nov '07  
GeneralA small caveat PinmemberJorge Varas8:20 12 Jun '07  
GeneralRe: A small caveat Pinmemberdazzer1231:38 20 Aug '07  
GeneralMultiple Versions PinmemberStrattonN3:59 12 Jun '07  
AnswerRe: Multiple Versions Pinmemberjosepaulino4:12 12 Jun '07  
GeneralRe: Multiple Versions PinmemberHirenjPatel0:49 2 Aug '07  
GeneralRe: Multiple Versions Pinmemberjosepaulino3:25 2 Aug '07  
GeneralWord user confirmations Pinmemberjportelas3:48 12 Jun '07  
GeneralRe: Word user confirmations [modified] PinmemberStrattonN4:07 12 Jun '07  
GeneralRe: Word user confirmations Pinmemberjosepaulino4:19 12 Jun '07  
GeneralRe: Word user confirmations PinmemberNicolas MEURET6:08 14 Jun '07  
AnswerRe: Word user confirmations Pinmemberjosepaulino7:05 14 Jun '07  

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Mobile
Web01 | 2.5.120517.1 | Last Updated 9 Jun 2007
Article Copyright 2007 by josepaulino
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid