• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 254
  • Last Modified:

Printing in word

Private Sub Main()
Set wrdApp = New Word.Application
    wrdApp.Documents.Open ("c:\Docs\Doc1.doc")
    wrdApp.ActiveDocument.PrintOut
   
    wrdApp.Documents.Close (wdDoNotSaveChanges)

    wrdApp.Quit
    Set wrdApp = Nothing
Exit Sub

The problem is that when I run this word will quit and ask me if I want to terminate the print job.  
How can I code it so that it waits until the print job has completed and then quits word?

Thanks in advance

Iain
0
iJolly4
Asked:
iJolly4
  • 6
  • 4
  • 2
  • +4
1 Solution
 
AzraSoundCommented:
try including a DoEvents statement before closing the app
0
 
Éric MoreauSenior .Net ConsultantCommented:
Try this line:
wrdApp.ActiveDocument.PrintOut Background:=False
0
 
BarryTiceCommented:
I've never tried it myself, iJolly4, but my understanding is you can do this with ShellExecute.

Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, _
    ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, _
    ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Private Sub CmdHelp_Click()

Dim lngReturn As Long
Dim strPath As String
Dim strFile As String

strFile = "Doc1.doc"      'Name of your file
strPath = "C:\Docs\"       'Path to your file.

lngReturn = ShellExecute(Me.hwnd, "Print", strFile, "", strPath, 1)

End Sub

Hope this helps -- b.r.t.
0
Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
BarryTiceCommented:
Erf -- Make that "Public Declare Function" a "Private Declare Function" or put the API definition in its own module.
0
 
JalenCommented:
Insert a DoEvents just before the
wrdApp.Documents.Close DoNotSaveChanges)
line
0
 
Éric MoreauSenior .Net ConsultantCommented:
Jalen,

Please, change your answer to a comment since AzraSound already suggested it.
0
 
JalenCommented:
My Apologies I did Not see Azrasounds Answer ...I didn't even look at the answers ..I just scrolled down and answered it ..again My apologies ...Well spotted ..Thanks ...
Jalen
Kerry(The Kingdom)
Ireland
0
 
Éric MoreauSenior .Net ConsultantCommented:
Jalen,

You have an option to transform your answer to a comment, please use it!
0
 
JalenCommented:
I already did change it!!!!
0
 
Éric MoreauSenior .Net ConsultantCommented:
Sorry Jalen.

Where is iJolly4 now?
0
 
JalenCommented:
Emoreau...Now you've really lost me "Where is i jolly4 now".....I give up where are they ....*S*
Jalen
Kerry(The Kingdom)
Ireland
0
 
Éric MoreauSenior .Net ConsultantCommented:
No I simply hope that iJolly4 will surface saying if one of the comment is satisfying!
0
 
olkaCommented:
i had the same problem. I solved it with using a timer, which calls a procedure to check the Printer status.
Put a timer with an interval e.g. of 60s in your MDI-form .
When the timer raises call a sub like this:
Sub checkWordPrintStatus(blnQuit As Boolean, tmrWordPrint As Timer)
  If WordApp.BackgroundPrintingStatus = 0 Or blnQuit = True Then
    ' if printerstatus = 0 (--> printing is finished) or MDI-Form is closed
    ' close MS-WORD without saving anything
   
    WordApp.Quit wdDoNotSaveChanges
   
    tmrWordPrint.Enabled = False                          'Timer zurücksetzen
  End If
End Sub


0
 
iJolly4Author Commented:
He has surfaced and the DoEvents statement was the first thing that I tried before mailing this.....................................................It didn't work.  I am just trying olka's solution.  BackgroundPrintingStatus was what I looked at but I foolishly continually checked its status that seemed to prevent word from printing - The timer may help.

I will let you all know.  Thanks for the help.
0
 
Éric MoreauSenior .Net ConsultantCommented:
As I already posted, have you try this simple line? It works well for me:
wrdApp.ActiveDocument.PrintOut Background:=False
0
 
polmorphismCommented:
   msWord.Application.Options.PrintBackground = False
    msWord.ActiveDocument.PrintOut , , wdPrintAllDocument, , , , , , , , False
    msWord.ActiveDocument.Close wdDoNotSaveChanges
    msWord.Quit
    Set msWord = Nothing
0
 
iJolly4Author Commented:
Thanks for that polymorphism.

Looks a much simpler way of doing things.  Unfortunately I awarded the points over 2 years ago...You would have got them though had you been a little bit quicker with your reply.  Thanks for the help though - If I get the time I may change my code.

Cheers
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Introducing Cloud Class® training courses

Tech changes fast. You can learn faster. That’s why we’re bringing professional training courses to Experts Exchange. With a subscription, you can access all the Cloud Class® courses to expand your education, prep for certifications, and get top-notch instructions.

  • 6
  • 4
  • 2
  • +4
Tackle projects and never again get stuck behind a technical roadblock.
Join Now