MSOUTL.OLB Version 9.4 missing (1 Viewer)

Eljefegeneo

Still trying to learn
Local time
Yesterday, 22:53
Joined
Jan 10, 2011
Messages
904
Using Access 2010 on a new Windows 10 computer.

Previously I had no problems updating and distributing a full version (not Runtime) to the all six users of the DB. All had Windows 7. One has a new computer with Windows 10 I assume the latest version. At first our outside tech consultant wanted to install Office 2019 – Access 2019 on the computer but since I have for over a year used Access 2010 on my home computer – same DB – there have not been any compatibility problems.

We have had some issues with running Access on this new computer. I had previously had a batch file on the user's desktop when they could with one click update their front end from the server copy. When they do this the linked tables are not there. So I told them to merely copy the new front end from the server and paste it to the desktop which is essentially a manual version of the batch file.

Now they get the following error message when they start the Access program:
Your Microsoft Access Database or project contains a missing or broken reference to the file 'MSOUTL.OLB version 9.4'.

I cannot find this reference in the reference library. Searching for this reference brings up pages of what this is but it refers to Outlook. I cannot figure out how to see what is in the Outlook reference library. The only thing I can find is to uninstall office and then re-install this. Since I am 50 miles away I cannot do this.

Is there some solution to this problem other than deleting and re-installing the Office 2010 Pro program?
 

theDBguy

I’m here to help
Staff member
Local time
Yesterday, 22:53
Joined
Oct 29, 2018
Messages
21,471
Hi. One way to troubleshoot it is remove the reference and then compile your project to see what errors you get. Hopefully, this will give you a clue as to what file or program or application you need to install or update.
 

Eljefegeneo

Still trying to learn
Local time
Yesterday, 22:53
Joined
Jan 10, 2011
Messages
904
I am sorry but you have lost me. I do not know what you mean by removing the reference. The error message says the reference is missing.

I regularly debug the code. Is this what you mean by compile. I do not get any errors.
 

arnelgp

..forever waiting... waiting for jellybean!
Local time
Today, 13:53
Joined
May 7, 2009
Messages
19,241
use Late binding. google it. it will save you a lot if you will convert all your automation to late binding. and will be compatible in all scenario.

it is missing because the other pc is using other version of office app.
 

Eljefegeneo

Still trying to learn
Local time
Yesterday, 22:53
Joined
Jan 10, 2011
Messages
904
Does this mean that I have to go through all the code and change any reference from early binding to late binding? I would hope that there is some code to insert at the beginning of the DB startup. Oh my, what a mess I seem to have gotten into. Why does MS do this to us simple minded users?
 

theDBguy

I’m here to help
Staff member
Local time
Yesterday, 22:53
Joined
Oct 29, 2018
Messages
21,471
I am sorry but you have lost me. I do not know what you mean by removing the reference. The error message says the reference is missing.

I regularly debug the code. Is this what you mean by compile. I do not get any errors.

Hi. What I meant was go to the code window and select Tools > References and see what's been marked as "Missing." If you find any, write them down and then uncheck the box for it. Then, select Debug > Compile and try to fix any errors.
 

theDBguy

I’m here to help
Staff member
Local time
Yesterday, 22:53
Joined
Oct 29, 2018
Messages
21,471
Does this mean that I have to go through all the code and change any reference from early binding to late binding? I would hope that there is some code to insert at the beginning of the DB startup. Oh my, what a mess I seem to have gotten into. Why does MS do this to us simple minded users?

Changing from early to late binding basically only needs to change variable declarations from like

Dim olApp As Outlook.Application

to something like

Dim olApp As Object

And also change any enumerations to their equivalent numerical values.
 

Eljefegeneo

Still trying to learn
Local time
Yesterday, 22:53
Joined
Jan 10, 2011
Messages
904
I have the References open but so not see any reference to "missing" items. Just checked and unchecked items.
 

theDBguy

I’m here to help
Staff member
Local time
Yesterday, 22:53
Joined
Oct 29, 2018
Messages
21,471
I have the References open but so not see any reference to "missing" items. Just checked and unchecked items.

If nothing is marked as missing, then I don't understand why you would get an error complaining about a missing reference. Can you take a screenshot for us of all the selected references? Thanks!
 

Micron

AWF VIP
Local time
Today, 01:53
Joined
Oct 20, 2018
Messages
3,478
You are doing this where, on the problem pc or one on which this works? If the latter, you won't notice any issues because the references are valid.
I cannot find this reference in the reference library.
You won't unless you can see the entire path to the file where it shows the location near the bottom of the dialog.
I cannot figure out how to see what is in the Outlook reference library.
If you mean the file, you can't and don't need to.


MSOUTL.OLB version 9.4 << this is a reference library for Outlook when using other programs to control Outlook.

As stated, late binding is the way to go if users are going to have different versions of Office programs installed. Do Not uninstall/reinstall the same version of Office for this issue - it won't help.
 

Eljefegeneo

Still trying to learn
Local time
Yesterday, 22:53
Joined
Jan 10, 2011
Messages
904
Before I delve into this morass of changing all my code to late binding, I would like to know if the problem is because there are two versions of Outlook on the miscreant computer. Office 365 and Outlook 2010. If I remove either the Outlook 2010 or the Office 365 version would this solve the problem? That is there is only one version of Outlook on the computer. Or even if Outlook 365 or whatever the call it the problem and I should have only Outlook 2010 on it?
 

theDBguy

I’m here to help
Staff member
Local time
Yesterday, 22:53
Joined
Oct 29, 2018
Messages
21,471
Before I delve into this morass of changing all my code to late binding, I would like to know if the problem is because there are two versions of Outlook on the miscreant computer. Office 365 and Outlook 2010. If I remove either the Outlook 2010 or the Office 365 version would this solve the problem? That is there is only one version of Outlook on the computer. Or even if Outlook 365 or whatever the call it the problem and I should have only Outlook 2010 on it?
Hi. Another approach before you delve into changing all your code is to create a small demo file with only one code you could use for testing.
 

Micron

AWF VIP
Local time
Today, 01:53
Joined
Oct 20, 2018
Messages
3,478
2 versions of outlook on the same pc is not recommended according to M$
 

Eljefegeneo

Still trying to learn
Local time
Yesterday, 22:53
Joined
Jan 10, 2011
Messages
904
DB Guy: That was what I was planning to do this weekend.
 
Last edited:

Eljefegeneo

Still trying to learn
Local time
Yesterday, 22:53
Joined
Jan 10, 2011
Messages
904
OK, this is what I have now on the DB in various locations. How do I convert this to late binding? I've done some research and all it has done is left me confused.

Code:
  Dim outobj As Outlook.Application
  Dim outappt As Outlook.AppointmentItem   'An Outlook Appointment Item
  Set outobj = CreateObject("outlook.application")
  Set outappt = outobj.CreateItem(olAppointmentItem)
  With outappt
Code:
  Dim outobj As Outlook.Application
  Dim outtask As Outlook.TaskItem   'An Outlook Task Item
  Set outobj = CreateObject("outlook.application")
  Set outtask = CreateItem(olTaskItem)
  With outtask
Code:
  Dim olApp As New Outlook.Application
  Dim mItem As Outlook.mailitem  ' An Outlook Mail item
  Set olApp = CreateObject("Outlook.Application")
  Set mItem = olApp.CreateItem(olMailItem)
    With mItem
What about using SendObject? Is that affected as are the above? Or is that OK to use as is?
 

isladogs

MVP / VIP
Local time
Today, 06:53
Joined
Jan 14, 2017
Messages
18,218
Although you can (as I do) have two versions of Office including Access, Excel, Word on the same PC, from experience you cannot have more than one version of Outlook.
 

Eljefegeneo

Still trying to learn
Local time
Yesterday, 22:53
Joined
Jan 10, 2011
Messages
904
The code in #16 above is my old code. Yet when I search for Late Biding it seems the same to me. Am I wrong? Very confused at this point.
 

theDBguy

I’m here to help
Staff member
Local time
Yesterday, 22:53
Joined
Oct 29, 2018
Messages
21,471
OK, this is what I have now on the DB in various locations. How do I convert this to late binding? I've done some research and all it has done is left me confused.

Code:
  Dim outobj As Outlook.Application
  Dim outappt As Outlook.AppointmentItem   'An Outlook Appointment Item
  Set outobj = CreateObject("outlook.application")
  Set outappt = outobj.CreateItem(olAppointmentItem)
  With outappt
Code:
  Dim outobj As Outlook.Application
  Dim outtask As Outlook.TaskItem   'An Outlook Task Item
  Set outobj = CreateObject("outlook.application")
  Set outtask = CreateItem(olTaskItem)
  With outtask
Code:
  Dim olApp As New Outlook.Application
  Dim mItem As Outlook.mailitem  ' An Outlook Mail item
  Set olApp = CreateObject("Outlook.Application")
  Set mItem = olApp.CreateItem(olMailItem)
    With mItem
What about using SendObject? Is that affected as are the above? Or is that OK to use as is?
Hi. No, SendObject is not affected by late or early binding. It just uses the default email client.


As for converting your code to late bound. Try something like this:
Code:
Dim outobj As Object
Dim outappt As Object
Set outobj = CreateObject("Outlook.Application")
Set outappt = outobj.CreateItem(1)
Code:
Dim outobj As Object
Dim outtask As Object
Set outobj = CreateObject("Outlook.Application")
Set outtask = outobj.CreateItem(3)
Code:
Dim olApp As Object
Dim mItem As Object
Set olApp = CreateObject("Outlook.Application")
Set mItem = olApp.CreateItem(0)
Hope it helps...
 

Users who are viewing this thread

Top Bottom