Reply
 
Thread Tools Display Modes
  #1   Report Post  
 
Posts: n/a
Default The message filter indicated that the application is busy.


Hi,

Am working on a mail merge web application which generates documents
and saves them. Being a rookie in Mail Merge and Word Automation, have
to thank MVPs and other Google Groups Users for helping me solve quite
a few problems and I have recently moved my app to prod.

However, the app throws a few erratic errors which am not able to
reproduce in order to fix them. Request help in this regard as I feel
like am hitting against a wall as its now a prod issue.

A couple of errors are such:

1. The message filter indicated that the application is busy.
2. The remote server machine does not exist or is unavailable.

Am using VB 6.0 and Microsoft Word Library 9.0 on Win2K Server. The
following is the code I have. The GenerateDoc function takes an
instance of Word Application object and does the mail merge from a data
source while at the same time putting placeholders into documents for
form text fields. The doFindReplace Function replaces the placeholders
after merging the document document with a data source.

The above stated errors are thrown from the doFindReplace function.
Also, can someone please explain to me as to how WinWord manages
concurrency while its running on a server(invoked through a COM
component) for use in a web application.

Dim objWordApp As Word.Application
Set objWordApp = New Word.Application

Private Function GenerateDoc( ByVal strFileName as String,
ByRef objWordApp As Word.Application,
ByVal strDocToGenPath as String,
ByRef vError As Variant) As Boolean
On Error GoTo ErrHandler

Dim objBaseTemplate As Word.Document
Dim objGenDoc As Word.Document
Dim frmField As FormField
Dim strFieldText() As String
Dim iCount As Integer
Dim blnFormFieldsFlag As Boolean

blnFormFieldsFlag = False

Set objBaseTemplate = objWordApp.Documents.Add(Template:=strFileName,
Visible:=True)

objBaseTemplate.ActiveWindow.Visible = True

objBaseTemplate.MailMerge.OpenDataSource strDataSource

objBaseTemplate.MailMerge.Destination = wdSendToNewDocument

objBaseTemplate.MailMerge.SuppressBlankLines = True

If objBaseTemplate.MailMerge.fields.Count = 0 Then
objBaseTemplate.Protect wdAllowOnlyFormFields, True, strPassword
objBaseTemplate.SaveAs FileName:=strDocToGenPath

objBaseTemplate.Close
Set objBaseTemplate = Nothing
Else

For Each frmField In objBaseTemplate.FormFields
If frmField.Type = wdFieldFormTextInput Then

' Redim array to hold contents of text field.
ReDim Preserve strFieldText(1, iCount + 1)

' Place content and name of field into array.
strFieldText(0, iCount) = frmField.Result
strFieldText(1, iCount) = frmField.Name

' Select the form field.
frmField.Select

' Replace it with placeholder text.
objBaseTemplate.Application.Selection.TypeText "" & strFieldText(1,
iCount) & "PlaceHolder"

' Increment icount
iCount = iCount + 1
blnFormFieldsFlag = True
End If
Next frmField

objBaseTemplate.MailMerge.Execute


If blnFormFieldsFlag = True Then
doFindReplace iCount, frmField, strFieldText(), objGenDoc
End If

objBaseTemplate.Saved = True
objBaseTemplate.Close
Set objBaseTemplate = Nothing

Set objGenDoc = objWordApp.ActiveDocument

objGenDoc.Protect wdAllowOnlyFormFields, True, strPassword
objGenDoc.SaveAs FileName:=strDocToGenPath

objGenDoc.Close
Set objGenDoc = Nothing
End If

GenerateDoc = True
Exit Function
ErrHandler:
LogError strFunction, Err.Number, Err.Description & " - (Doc Id " &
CStr(strFileName) & ") ", Err.source
GenerateDoc = False
Err.Clear

If Not objBaseTemplate Is Nothing Then
objBaseTemplate.Close

Set objBaseTemplate = Nothing
End If

If Not objGenDoc Is Nothing Then
objGenDoc.Close
Set objGenDoc = Nothing
End If
End Function


Private Function doFindReplace(iCount As Integer, frmField As
FormField, fFieldText() As String, ByRef objWordDoc As Word.Document)
As Boolean
On Error GoTo ErrHandler:

Dim intLoop As Integer
Dim strFunction As String
Dim fField As FormField

strFunction = "doFindReplace"

' Go to top of document.
Selection.HomeKey Unit:=wdStory

' Initialize Find.
Selection.Find.ClearFormatting

With Selection.Find
..Forward = True
..Wrap = wdFindContinue
..Format = False
..MatchCase = False
..MatchWholeWord = False
..MatchWildcards = False
..MatchSoundsLike = False
..MatchAllWordForms = False

' Loop form fields count.
For intLoop = 0 To iCount

' Execute the find.
Do While .Execute(FindText:="" & fFieldText(1, intLoop) _
& "PlaceHolder") = True

' Replace the placeholder with the form field.
Set fField = Selection.FormFields.Add _
(Range:=Selection.Range, Type:=wdFieldFormTextInput)

' Restore form field contents and bookmark name.
fField.Result = fFieldText(0, intLoop)
fField.Name = fFieldText(1, intLoop)
Loop

' Go to top of document for next find.
Selection.HomeKey Unit:=wdStory

Next
End With

doFindReplace = True
Exit Function
ErrHandler:
LogError strFunction, Err.Number, Err.Description, Err.source
Err.Clear
doFindReplace = False
End Function

Any help in this regard is highly appreciated. Thanks in advance.

Vimal

Reply
Thread Tools
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Sending Mail Merge to Email to Multiple Recipients in the Same Mes Mark V Mailmerge 13 April 21st 23 05:06 PM
Word 2003 application closes automatically when last document is . ddull2 Microsoft Word Help 1 January 13th 05 07:25 PM
Web mail merge application returning error "Permission denied" Thomas Bushman Mailmerge 0 December 29th 04 07:59 PM
Word Message - Macros in this project have been disabled Skipper Microsoft Word Help 1 December 17th 04 03:46 PM
Error message for "PDFMAKER", Benjamin Flogged Daley Microsoft Word Help 1 December 2nd 04 09:44 AM


All times are GMT +1. The time now is 09:53 AM.

Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 Microsoft Office Word Forum - WordBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Word"