MarkH
lists at theopg.com
Sun Apr 10 08:40:10 CDT 2005
Try not releasing the object maybe mark -----Original Message----- From: accessd-bounces at databaseadvisors.com [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of MartyConnelly Sent: 09 April 2005 18:34 To: Access Developers discussion and problem solving Subject: Re: [AccessD] Word closes before it shows the user the document 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 -- AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com --- Incoming mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.859 / Virus Database: 585 - Release Date: 14/02/2005 --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.859 / Virus Database: 585 - Release Date: 14/02/2005