[AccessD] Problems with word Automation

MartyConnelly martyconnelly at shaw.ca
Wed Aug 3 18:49:56 CDT 2005


  'For early binding with a reference to Word
  ' Dim objWD As Word.Application
  ' Dim WordDoc As Word.Document
  ' Dim WordRange As Word.Range

  'For Late binding without a reference to Word use generic Object

   Dim objWD As Object
   Dim WordDoc As Object
   Dim WordRange As Object
    ' In certain cases using nodes, you may have to use a variant rather than Object

There is a way to handle all this with conditional compile statements
but it is sometimes easier to just add and switch comment out statements 
as needed.


Kim Wiggins wrote:

>When I try to remove the reference on my computer and try to run the application it errors out.  Shouldn't it run on my system without a reference if I am using late binding like you said?  Should I try to set the reference at runtime with a command that references the appropriate object on the system I am using?  Does anyone know what the syntax is to set the reference at runtime?  Does that mean I need to download msword8.olb and msword9.olb?  If so, where do I get those from?  Here is my code:
> 
>Private Sub cmdLogEntry_Click()
>   ' Declare the variable.
>   Dim objWD As Word.Application
>   Dim WordDoc As Word.Document
>   Dim WordRange As Word.Range
>   Dim strPath As String
>   Dim strFile As String
>   Dim strFile1 As String
>   Dim strFile2 As String
>   Dim strFile3 As String
>   Dim strFile4 As String
>   Dim strDate As String
>   Dim strDate2 As Variant
>   Dim strDate1 As String
>   Dim strActions As String
>   Dim strActions1 As String
>   strDate2 = Null
>   
>   On Error GoTo SubErr
>   ' Set the variable (runs new instance of Word.)
>   Set objWD = CreateObject("Word.Application")
>   
>   'make application visible
>   objWD.Application.Visible = True
> 
>   'Get Path of Current DB
>    strPath = frmSplash.strPath
>    
>   'Strip FileName to Get Path to Doc
>    Do
>        lngInStr = InStr(lngInStr + 1, strPath, "\")
>    Loop While (InStr(lngInStr + 1, strPath, "\") <> 0)
>    
>    'Get path up to the last \
>    strPath = Left(strPath, lngInStr)
>    
>    'Append document name onto the end of the stripped path
>    strFile = strPath & "AirframeTemplate.doc"
>    strFile1 = strPath & "RtEngineTemplate.doc"
>    strFile2 = strPath & "LtEngineTemplate.doc"
>    strFile3 = strPath & "RtPropTemplate.doc"
>    strFile4 = strPath & "LtPropTemplate.doc"
>    
>    'open the word document
>    Set doc = objWD.Documents.Open(strFile)
>
>   
>Kim Wiggins <kimjwiggins at yahoo.com> wrote:
>Thanks so much Marty and Marcel for helping me to understand this better. This is my first attempt at automation. Unfortunately, I will not see this user until Saturday so I can't test it out until then but I will let you know next week if everything went well. Thanks
>
>MartyConnelly wrote:You are using late binding so you don't need any references set to Word, 
>which maybe causing the problem
>It might be useful to have a reference if using intellisense or looking 
>at object browser
>but you would remove the reference before deploying with late binding.
>With late binding it will grab the highest version of word on the system
>You might be using some esoteric part of word say using xml file 
>routines that don't exist
>in Word 97, so you may want to check the version of word running to 
>avoid problems
>with lower versions.
>
>On Error Resume Next
>' grab word if already running
>Set objWord = GetObject(, "Word.Application")
>On Error GoTo 0
>' or if word not already running error Err.Number = 429 or 
>set to nothing
>If objWord Is Nothing Then
>
>Set objWord = CreateObject("Word.Application")
>Debug.Print objWord.Version
>
>' if Word 97 SP2 then Word Version= 8.0b
>' Word 9 opens a separate window for each document.
>' Prior to Word 9, all documents opened in the same window.
>End If
>
>
>Kim Wiggins wrote:
>
>  
>
>>I am using 
>>Set objWord = CreateObject("Word.Application")
>>
>>Do you think that could be the problem?
>>Kim
>>
>>
>>MartyConnelly wrote:
>>Are you using early or late binding.
>>Set objWord = CreateObject("Word.Application")
>>or
>>Set objWord = New Word.Application
>>Funny things may happen with early binding if newer versions of word 
>>installed and then uninstalled.
>>
>>Kim Wiggins wrote:
>>
>>
>>
>>    
>>
>>>Hey everyone
>>>Hope all is well. I am not. I coded an automation report in VB6 using Word and it works fine on my work laptop and my laptop at home. But when I install it on the users computer, it gives me the standard application error and shuts down. It says "My_app_name has encountered an error and must close" and then it offers to send a report. Well that is flooring me because it runs in the development environment on both machines just fine. 
>>>Can anyone think of anything that I am missing or overlooking?
>>>Thanks
>>>Kim
>>>
>>>
>>>---------------------------------
>>>Start your day with Yahoo! - make it your home page 
>>>
>>>
>>>
>>>
>>>      
>>>
>>
>>    
>>
>
>  
>

-- 
Marty Connelly
Victoria, B.C.
Canada






More information about the AccessD mailing list