MartyConnelly
martyconnelly at shaw.ca
Sat Apr 9 12:33:55 CDT 2005
Just maybe this is it, part way through your code you suddenly Set objWord = Nothing objWord.Activate ' Activates Word objWord.Visible = True ' Show Word to the user. objWord.WindowState = wdWindowStateMaximize Set objWord = Nothing ' Release the object variable. connie.kamrowski at agric.nsw.gov.au wrote: >Hi all, > >Now trying to fix a 2nd database which is not working, written in Access97. >Problem is there is a Form letter function (code below) when I call this >function it opens word but no document appears in the window. The popup to >ask if it printed OK appears but the document is not visible to the user >and no printing occurs. If I comment out the line >'.Documents(strMainDocument).Close SaveChanges:=wdDoNotSaveChanges I get a >program monitor error but the document is visible. > >Any ideas? > >Connie Kamrowski > >Analyst/Programmer >Information Technology >NSW Department of Primary Industries >Orange > > >Public Sub Export_Word() >Dim rsA0001 As Recordset > >Dim objWord As Word.Application >Dim strMainDocument As String > >Dim dbExportWord As Database >Dim rsExportWord As Recordset >Dim booPrintBackground As Boolean > > >gfLetterPrintedOK = False 'Value will be set to true if the user verifies >that the letter printed > >' Resume to the next line following the error. >On Error Resume Next > >' Attempt to reference Word which is already running. >Set objWord = GetObject(, "Word.Application") >If Err = 429 Then > Set objWord = New Word.Application > Err = 0 >End If > > >' If true, Word is not running. >If objWord Is Nothing Then > ' Create a new instance of the Word application. > Set objWord = New Word.Application > ' If true, MS Word is not installed. > If objWord Is Nothing Then > MsgBox "MS Word is not installed on your computer" > GoTo ExitRoutine > End If 'objWord Is Nothing >End If 'objWord Is Nothing > >'Check to Ensure the temporary RTF file has been deleted, if not, Delete it > gstrWordDirectory = Dir$(strTempRTFFile, vbNormal) > If gstrWordDirectory <> "" Then > On Error GoTo Failure 'Displays 'File Access Error (#71) if >a form letter is already open > Kill strTempRTFFile > On Error Resume Next > End If 'gstrWordDirectory <> "" > > If gstrAccessWordQuery = "" Then > 'Print Blank Form > objWord.Documents.Add (gstrTemplate) > Else > DoCmd.OutputTo acOutputQuery, gstrAccessWordQuery, _ > acFormatRTF, strTempRTFFile, False > objWord.Documents.Add (gstrTemplate) 'Template document >'*.dot' > strMainDocument = objWord.ActiveDocument.Name 'Sets the >name of the 'Main Document' (template document) > 'so that it can be closed later > > With objWord.ActiveDocument.MailMerge > .SuppressBlankLines = True > .ViewMailMergeFieldCodes = False > .Destination = wdSendToNewDocument > .Execute > End With > > With objWord 'Close Main Document > .Documents(strMainDocument).Activate > .Documents(strMainDocument).Close >SaveChanges:=wdDoNotSaveChanges > ' Store background printing option. > > > > End With > > objWord.Activate ' Activates Word > objWord.Visible = True ' Show Word to the user. > objWord.WindowState = wdWindowStateMaximize > Set objWord = Nothing ' Release the object variable. > > On Error GoTo Failure > > If MsgBox("Did your letter print correctly?", vbYesNo, >"Form Letters") = vbYes Then > > gfLetterPrintedOK = True > Set dbExportWord = CurrentDb() > Set rsExportWord = >dbExportWord.OpenRecordset("tblLettersSent", dbOpenDynaset, dbFailOnError) > > With rsExportWord > .AddNew > !LTRLPBNumber = gstrRLPBNumber > !LTPropertyID = glngMainPropertyID > !LTFormLetterID = gstrFormLetterID > !LTComment = gstrFormLetterComment > !LTDatePrinted = Date > !LTTimePrinted = Time > .Update > End With > > Select Case getgstrFormLetterID() > Case "A0001" > dbExportWord.Execute "A000104", >dbFailOnError > > End Select > End If 'MsgBox("Did your letter print correctly?"... > End If 'gstrAccessWordQuery = "" > > >ExitRoutine: > On Error Resume Next > rsExportWord.Close > Set rsExportWord = Nothing > dbExportWord.Close > Set dbExportWord = Nothing > rsA0001.Close > Set rsA0001 = Nothing > Set objWord = Nothing ' Release the object variable. > Exit Sub > >Failure: > Call ErrorHandler(strProcedureName:="Export_Word", >lngErrorNumber:=Err.Number, _ > strErrorDescription:=Err.Description, _ > strErrorSource:=Err.Source) > Resume ExitRoutine > > End Sub > > > > >This message is intended for the addressee named and may contain >confidential information. If you are not the intended recipient or received >it in error, please delete the message and notify sender. Views expressed >are those of the individual sender and are not necessarily the views of >their organisation. > > > > -- Marty Connelly Victoria, B.C. Canada