[AccessD] Automation of word

Max Wanadoo max.wanadoo at gmail.com
Fri Feb 8 09:24:22 CST 2008


John,
Have you tried this yet??
Max
 

-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Max Wanadoo
Sent: Thursday, February 07, 2008 11:27 PM
To: 'Access Developers discussion and problem solving'
Subject: Re: [AccessD] Automation of word

John,
I have had a play with this but I cannot get the WithEvents part of the
Class module to kick-in.
If you go directly to the command "objword.appWord.ActiveDocument.Close"
then the WithEvents kicks in ok, but i cannot make it happen when the user
uses the BIG X on the document.
You know more about Classes than I.  You may be able to get it working.
Max


HERE IS THE CLASS MODULE (clsWord)
Option Compare Database
Option Explicit
' Set reference to Microsoft Word 11.0 object library

Public WithEvents appWord As Word.Application

Private Sub appWord_DocumentBeforeClose(ByVal Doc As Word.Document, Cancel
As Boolean)
  MsgBox "Please close the document using the button on the Data Form"
  Cancel = True
End Sub

Private Sub Class_Initialize()
  On Error Resume Next
  Set appWord = New Word.Application
  If Err.Number <> 0 Then
    Err.Clear
  End If
End Sub

Private Sub Class_Terminate()
  Set appWord = Nothing
End Sub

HERE IS THE MODULE CODE WHICH USES THE CLASS (modWord) Option Compare
Database Option Explicit Private objword As New appWord Private Function
fTestWordObject()
  Dim strLetter As String, strSalutation As String, strID As String, strAddr
As String
  strLetter = "c:\Test.dot":  strSalutation = "Dear Sirs,":  strID = "123"
  strAddr = "123 High St" & vbCrLf & "Derby" & vbCrLf & "UK"

'  Dim objword As New appWord
  objword.appWord.Documents.Add Template:=strLetter, newtemplate:=False
  objword.appWord.Visible = True
  With objword.appWord.ActiveDocument.Bookmarks
    .Item("ID").Range.Text = strID
    .Item("Date").Range.Text = CStr(Format(Date, "long date"))
    .Item("Address").Range.Text = strAddr
    .Item("Salutation").Range.Text = strSalutation
  End With
  
exithere:
  Set objword = Nothing
  Exit Function
End Function

' assume this is the button code on the form to close the document Private
Sub ButCloseWord_Click()
  Dim intResponse As Integer
  intResponse = MsgBox("Do you want to close the document?", vbYesNo)
  If intResponse = vbYes Then
    objword.appWord.ActiveDocument.Close True
  End If
End Sub

--
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com




More information about the AccessD mailing list