Click here to Skip to main content
12,406,124 members (70,845 online)
Click here to Skip to main content
Add your own
alternative version

Stats

100.4K views
2.5K downloads
31 bookmarked
Posted

Printing a Word Document using Word Automation

, 9 Jun 2007 CPOL
Rate this:
Please Sign up or sign in to vote.
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)

Share

About the Author

josepaulino
United States United States
No Biography provided

You may also be interested in...

Comments and Discussions

 
GeneralWonderful! Pin
JohnAndre7-May-14 4:38
memberJohnAndre7-May-14 4:38 
QuestionGOOD JOB! But have one question Pin
Member 1032105913-Oct-13 16:50
memberMember 1032105913-Oct-13 16:50 
QuestionGood Article josepaulino....but haiving One Que ? Pin
koolprasad20038-Oct-10 20:33
memberkoolprasad20038-Oct-10 20:33 
GeneralMy vote of 5 Pin
koolprasad20038-Oct-10 20:26
memberkoolprasad20038-Oct-10 20:26 
GeneralThanks alot Pin
DurgaPNaidu21-Nov-07 1:11
memberDurgaPNaidu21-Nov-07 1:11 
GeneralA small caveat Pin
Jorge Varas12-Jun-07 8:20
memberJorge Varas12-Jun-07 8:20 
GeneralRe: A small caveat Pin
dazzer12320-Aug-07 1:38
memberdazzer12320-Aug-07 1:38 
GeneralMultiple Versions Pin
StrattonN12-Jun-07 3:59
memberStrattonN12-Jun-07 3:59 
AnswerRe: Multiple Versions Pin
josepaulino12-Jun-07 4:12
memberjosepaulino12-Jun-07 4:12 
GeneralRe: Multiple Versions Pin
HirenjPatel2-Aug-07 0:49
memberHirenjPatel2-Aug-07 0:49 
GeneralRe: Multiple Versions Pin
josepaulino2-Aug-07 3:25
memberjosepaulino2-Aug-07 3:25 
GeneralRe: Multiple Versions Pin
Member 98881887-Apr-14 2:01
memberMember 98881887-Apr-14 2:01 
GeneralWord user confirmations Pin
jportelas12-Jun-07 3:48
memberjportelas12-Jun-07 3:48 
GeneralRe: Word user confirmations [modified] Pin
StrattonN12-Jun-07 4:07
memberStrattonN12-Jun-07 4:07 
GeneralRe: Word user confirmations Pin
josepaulino12-Jun-07 4:19
memberjosepaulino12-Jun-07 4:19 
GeneralRe: Word user confirmations Pin
Nicolas MEURET14-Jun-07 6:08
memberNicolas MEURET14-Jun-07 6:08 
AnswerRe: Word user confirmations Pin
josepaulino14-Jun-07 7:05
memberjosepaulino14-Jun-07 7:05 
GeneralRe: Word user confirmations Pin
Beatrice Monk22-Oct-14 23:40
memberBeatrice Monk22-Oct-14 23:40 

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

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

| Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.160726.1 | Last Updated 9 Jun 2007
Article Copyright 2007 by josepaulino
Everything else Copyright © CodeProject, 1999-2016
Layout: fixed | fluid