Error 462 using Word within Visual Basic to print envelop

Here is the code:  
Receive error 462 when trying to print envelops using Word within VB 6.

Public Sub PrintEnvelopes()
    '**Error Handling***
    On Error GoTo ErrHandler
    Dim sSource As String
    sSource = "PrintEnvelopes"
    '**Error Handling***
   
    Dim i                       As Integer
   
    Dim oApp                    As Word.Application
    Dim oDoc                    As Word.Document
    Dim oWordTemplate           As Word.Document
   
    Dim oListItem               As ListItem
    Dim sDefenseAttyKey         As String
    Dim sDefenseAttyID          As String
    Dim oNode                   As MSXML2.IXMLDOMNode
    Dim oSection                As Word.Section
    Dim iSectionCount           As Integer
    Dim aAllSections()          As Boolean
   
    Dim sDefenseAttyName        As String
    Dim sTemp                   As String
    Dim sDefenseAttyAddress     As String
   
    Dim strMessage              As String
    Dim sFileName               As String
 
    Set oApp = GetCurrentWordInstance
    If oApp Is Nothing Then
         Set oApp = New Word.Application
    End If

    ' There must be an ACTIVE WORD document, to print envelope(s).
    Set oDoc = oApp.Documents.Add(msWordTemplate, False, wdNewBlankDocument, True)
    With oDoc
        If oDoc.ProtectionType <> wdNoProtection Then
            iSectionCount = oDoc.Sections.Count
            ReDim aProtectedSections(1 To iSectionCount)
            For i = 1 To iSectionCount
                aProtectedSections(i) = oDoc.Sections(i).ProtectedForForms
            Next i
            .Unprotect
        End If
        'Clear out the contents
        oDoc.Content.Delete
        oDoc.Activate
    End With
   'Set Envelope = CreateObject(Word.Envelope)
    i = 0
    Screen.MousePointer = vbHourglass
    For Each oListItem In lvSelect(LV_SELECTED).ListItems
        i = i + 1
        sDefenseAttyKey = oListItem.Key
        sDefenseAttyID = Replace(sDefenseAttyKey, S_ID, S_BLANK)
        Set oNode = GetXMLSingleNodeByXpath(moDocInfoDom, "//DefenseAttorney/Attorney[EmployeeID='" & sDefenseAttyID & "']")
        If oNode Is Nothing Then
            Err.Raise CUSTOM_ERR_NO_LOAD_WITNESS_XML, sSource, CUSTOM_ERR_NO_LOAD_WITNESS_XML_DESC
            Exit Sub
        End If
        'Get Witness Name and Address
        sDefenseAttyName = GetNameFMLS(oNode)
        sDefenseAttyAddress = GetAddressAAACSZWithLineFeedsA(oNode)
        sTemp = sDefenseAttyName & vbCr & sDefenseAttyAddress
        ActiveDocument.Envelope.PrintOut False, Address:=sTemp
    Next
   
    'Save the word template and delete it, so that user doesn't see the word document and freak out
    sFileName = CreateSubDocName()
    If gsWordDocumentsPath <> S_BLANK Then
       sFileName = gsWordDocumentsPath & "\" & sFileName
    End If
    oDoc.SaveAs sFileName
    oDoc.Close
    Kill sFileName
    Screen.MousePointer = vbDefault
   
    If i = 1 Then
        strMessage = "1 envelope printed"
    Else
        strMessage = i & " envelopes printed"
    End If
    MsgBox strMessage
   
CleanUp:
    Set oDoc = Nothing
    Screen.MousePointer = vbDefault
    If gbWordLaunchedByThisApp Then oApp.Quit
    Set oApp = Nothing
    Exit Sub
ErrHandler:
    If Err.Number = "462" Then
        MsgBox "Close this window. Save Case. Close CAIS. Try again to print envelope."
       
        sFileName = CreateSubDocName()
        If gsWordDocumentsPath <> S_BLANK Then
            sFileName = gsWordDocumentsPath & "\" & sFileName
        End If
        oDoc.SaveAs sFileName
        oDoc.Close
        Kill sFileName
        GoTo CleanUp
    End If
    Err.Raise Err.Number, sSource, Err.Description
    GoTo CleanUp
 
 
End Sub
dolphins_9Asked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

dc197Commented:
You mustn't run word in the background.
If you close a second instance of word, ALL instances (including the one inside your VB prog) are killed.

You can open a word doc but not close it.
This is a bug with Word.
0
dc197Commented:
I would also use the following binding:


   Dim oApp                    As NEW  Word.Application
   Dim oDoc                    As Word.Document    
   Set oDoc = oApp.Documents.Add(msWordTemplate, False, wdNewBlankDocument, True)



This bypasses the GetCurrentWordInstance and should create a new word instance for each instance of your program.
Remeber to clean up
oDoc.Close
oApp.Quit
Set oApp = nothing
set odoc = nothing
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
dc197Commented:
Dolphins, this is the answer.
I used to use word within my apps at work, but got so {{angry at }} the 462 errors that I do not use word any more.


0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Visual Basic Classic

From novice to tech pro — start learning today.

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.