Solved

vb, ms word, and a printer problem

Posted on 2004-08-29
6
146 Views
Last Modified: 2010-05-02
Hello,
I have a vb program that opens a word template, changes it, prints it in the background, then closes it.

For some reason, when this is run on a specific machine that uses word 2000, (I don't know if it matters)
it gives an error when I set the printer to a printer name.  This works all the time on most machines.  It only works once on another,  I have to restart to set the printer again.

Here is my code:

Set oWord = CreateObject("Word.Application")

With oWord
      .Documents.add (App.path & "\RptStandard.dot")

      .ActiveDocument.Bookmarks("book1").Select
      .Selection.TypeText "type this"

      ActivePrinter = frmMain.clsSetting.getSettings("PrinterPassName")  'this gives the right printer name, I am sure

      If err.Number <> 0 Then                'this error happens the second time I run this function
            MsgBox "There was an error selecting the printer, the document will not print."      
      Else
            .ActiveDocument.PrintOut Background:=True
      End If

      oWord.ActiveDocument.Saved = True

      While oWord.BackgroundPrintingStatus > 0
            DoEvents
      Wend

      oWord.ActiveDocument.Close
      oWord.Quit

End With


I have another form that pops up a window with all avalible printer names.  for some reason, it won't work after I run this function the second time.  It seems like for some reason, the printer can't be found.
0
Comment
Question by:jackjohnson44
  • 2
6 Comments
 
LVL 7

Expert Comment

by:_agj_
ID: 11929113
i have  a feeling the error is only due to the implementation of your:

     ActivePrinter = frmMain.clsSetting.getSettings("PrinterPassName")

in the sense, how is this clsSetting implemented.....
step through the relevant code. I guess you will find that it doesnt return a valid printer name each time it does a getSetting?
0
 

Author Comment

by:jackjohnson44
ID: 11931190
I have stepped through the code, it is the right name.  I am absolutely positive.  This can be changed to

 ActivePrinter = "Printer Name"      'printer name works, this is not the problem.


The second part of my problem is that I can't run code that lists the printer names after I run the above function once.  It has nothing to do with the name I am giving it.  I am absolutely positive of this fact.
0
 

Author Comment

by:jackjohnson44
ID: 11973630
I have found the solution, after much headache.

the correct syntax is

oWord.ActivePrinter =

not
ActivePrinter =

For some reason, leaving out the "oword" will work the first time you run the program, or it will work all the time if Outlook or Outlook express is open for some reason.  I haven't tested with applications other than outlook or outlook express.
0
 

Accepted Solution

by:
ee_ai_construct earned 0 total points
ID: 12452091
Question answered by asker or dialog valuable.
Closed, 125 points refunded.
ee_ai_construct (replacement part #xm34)
Community Support Admin
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I’ve seen a number of people looking for examples of how to access web services from VB6.  I’ve been using a test harness I built in VB6 (using many resources I found online) that I use for small projects to work out how to communicate with web serv…
Background What I'm presenting in this article is the result of 2 conditions in my work area: We have a SQL Server production environment but no development or test environment; andWe have an MS Access front end using tables in SQL Server but we a…
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…
This lesson covers basic error handling code in Microsoft Excel using VBA. This is the first lesson in a 3-part series that uses code to loop through an Excel spreadsheet in VBA and then fix errors, taking advantage of error handling code. This l…

911 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now