connie.kamrowski at agric.nsw.gov.au
connie.kamrowski at agric.nsw.gov.au
Wed Apr 13 23:54:44 CDT 2005
Thanks Guys I got it to work by adapting a little of each comment. the key
was partly in not releasing but also tweaking the rest .... have a mumbled
lately about working with stuff other programmers have written before you
LOL
Connie Kamrowski
Analyst/Programmer
Information Technology
NSW Department of Primary Industries
Orange
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
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.