?
Solved

vb, ms word, and a printer problem

Posted on 2004-08-29
6
Medium Priority
?
156 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
4 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

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

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

Article by: Martin
Here are a few simple, working, games that you can use as-is or as the basis for your own games. Tic-Tac-Toe This is one of the simplest of all games.   The game allows for a choice of who goes first and keeps track of the number of wins for…
Enums (shorthand for ‘enumerations’) are not often used by programmers but they can be quite valuable when they are.  What are they? An Enum is just a type of variable like a string or an Integer, but in this case one that you create that contains…
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
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…
Suggested Courses

571 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