Setting references problem

Hello,

I have a database which includes references to the Word and Excel object libraries. It has been developed in Access2000 format using Office xp (ver 10) and there are no problems running it as-is in Office 03 (ver 11). The problem has come up where someone is running the database in Office2000 (Access has been upgraded to 2002).

I have modified a routine from the MS web site which removes broken references. After that, it figures out the verson of office and resets the references. Code is further below...

When running it on the Office2000 machine I get the following error messages. I'm thinking the version numbers are all wrong...

"Your [database name] database or project contains a missing or broken reference to the file 'msword.olb' Version 8.2"

and

"Your [database name] database or project contains a missing or broken reference to the file 'excel.exe' Version 1.6"

Here's the code...

    Dim loRef As Access.Reference
    Dim intCount As Integer
    Dim intX As Integer
    Dim blnBroke As Boolean
   
    On Error Resume Next

    'Count the number of references in the database
    intCount = Access.References.count
 
    'Loop through each reference in the database
    'and remove broken references
    For intX = intCount To 1 Step -1
      Set loRef = Access.References(intX)
      With loRef
        blnBroke = .IsBroken
        If blnBroke = True Or Err <> 0 Then
          With Access.References
            .Remove loRef
          End With
        End If
       End With
    Next
   
  Set loRef = Nothing

 ' now set the references

If (Dir("c:\Program Files\Microsoft Office\Office11\msword.olb") <> "") Then
    With Access.References
        .AddFromFile "C:\Program Files\Microsoft Office\Office11\msword.olb"
    End With
ElseIf (Dir("c:\Program Files\Microsoft Office\Office10\msword.olb") <> "") Then
    With Access.References
        .AddFromFile "C:\Program Files\Microsoft Office\Office10\msword.olb"
    End With
ElseIf (Dir("c:\Program Files\Microsoft Office\Office\msword9.olb") <> "") Then
    With Access.References
        .AddFromFile "C:\Program Files\Microsoft Office\Office\msword9.olb"
    End With
End If

If (Dir("c:\Program Files\Microsoft Office\Office11\excel.exe") <> "") Then
    With Access.References
        .AddFromFile "C:\Program Files\Microsoft Office\Office11\excel.exe"
    End With
ElseIf (Dir("c:\Program Files\Microsoft Office\Office10\excel.exe") <> "") Then
    With Access.References
        .AddFromFile "C:\Program Files\Microsoft Office\Office10\excel.exe"
    End With
ElseIf (Dir("c:\Program Files\Microsoft Office\Office\excel9.olb") <> "") Then
    With Access.References
        .AddFromFile "C:\Program Files\Microsoft Office\Office\excel9.olb"
    End With
End If

Any ideas on how to fix or improve this?

wileedingo
LVL 1
wileedingoAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

 
flavoCommented:
Just use late binding rather than early binding and you don’t need to worry about refrences.

Example

Dim oxl as Object
Dim oWord as Object

Set oxl = CreateObject("Excel.Application")
Set oWord = CreateObject("Word.Application")

The use as you always have.  This will work on any version of Excel / Word. The only thing to look out for (and you would anyway with "dynamic refrences" is that you don’t try and use properties / methods that arent available in all versions.

If you are going to use the late binding, then take away the refrences for word and excel, you don’t need them anymore.

Good luck!

Dave
0

Experts Exchange Solution brought to you by ConnectWise

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
 
wileedingoAuthor Commented:
Thanks

I ran my code at startup. Would you instead just plug this in where you need to use Excel or Word? Basically, I have two procedures, one which opens a Word doc and the other an Excel file.

 
0
 
flavoCommented:
Basically where every you have

Dim oxl as Excel.APplication
Dim oWord as Word.Application

Set oXl = New excel.Application
Set oword = new word.aaplication
replace with


Dim oxl as Object
Dim oWord as Object

Set oxl = CreateObject("Excel.Application")
Set oWord = CreateObject("Word.Application")

Dave
0
 
wileedingoAuthor Commented:
Sooo much easier. Most excellent help. Thanks muchly.

wileedingo
0
 
flavoCommented:
To easy mate.

Good luck with your app!

Dave
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.