By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
424,491 Members | 1,169 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 424,491 IT Pros & Developers. It's quick & easy.

Missing Reference MSOUTL.OLB

P: 434
This has just started on some of my customers computers. I call outlook from within my app to send out emails. My program is on customers computers is compiled .accdr, I getting calls from some of my customers that they are getting an error "function not available". When I do the check references I find that the Outlook object library OLB is missing and that is causing the problem. What I've found is that if the customer doesn't have outlook on his/her machine that this is happening. I don't know why this hasn't happened before but now it has started. If I remove the MSOUTL.OLB reference everything works fine, but of course for those that have Outlook then Outlook doesn't work.
I don't want to have two programs one for Outlook and another for those without Outlook.
Does any body have any answers???
1 Week Ago #1
Share this Question
Share on Google+
12 Replies

Expert Mod 2.5K+
P: 3,054
Hey Tom!

My first question would be why all users in an enterprise environment don't have the same software--but that's probably way out of your hands.

My second question would then be, if they don't use Outlook, what do they use for e-mails? If you have a plethora of e-mail options, then you r job becomes increasingly more difficult, if not impossible.

If there is only one other e-mail option, then you need to figure out how to integrate that application into Access--in a manner similar to how you integrate Outlook. You would then just need to figure out who uses which e-mail system, which can become a nightmare.

The "best" solution is to have ll users on one e-mail system.

Hope this hepps!
1 Week Ago #2

P: 434
OK, some of my customers don't use the program to send emails. The program has options to send out reports created in PDF right from within the program.
Some customers use another email and create and save the pdf and then using their email provider (yahoo, gmail, etc) send the reports out that way.
I wish I knew how to setup VBA to use other email providers, and be able to check each user to find out which email provider they used and switch the program to use their provider.
Anyway thanks for the reply.
1 Week Ago #3

Expert Mod 2.5K+
P: 3,054
You may have to set up error trapping within your code. Theoretical example here:
  • Someone wants to send a pdf from the Db
  • The DB asks if they use Outlook
  • If they say no, it just downloads the PDF and tell sthem to send it manually
  • If they say yes, the DB tries to send it
  • If an error is produced, it notifies the user and downloads the PDF
  • If there is no error, it sends the pdf via outlook

This might be a bit more involved than what you were thinking, but it might be a bit less involved than trying to build around other e-mail applications.
1 Week Ago #4

Expert Mod 10K+
P: 12,315
There are more universal methods of sending email. For example, using a CDO object.

Expand|Select|Wrap|Line Numbers
  1. Sub sendEMail(strMessage)
  2.     On Error Resume Next
  4.     Dim oCDO
  5.     Set oCDO = CreateObject("CDO.Message")
  7.     With oCDO
  8.         .Subject = inputbox("subject")
  9.         .From = inputbox("from")
  10.         .To = inputbox("to")
  12.         .HTMLBody = strMessage
  13.         .Configuration.Fields.Item ("") = 2
  14.         .Configuration.Fields.Item("") = ""
  15.         .Configuration.Fields.Item("") = 25
  16.         .Configuration.Fields.Update
  17.         .Send
  18.     End With
  20.     If err.Number <> 0 Then err.Clear
  21. End Sub
You will just need to figure out the correct server address and port. For outlook, you can find that in your in account settings or you can ask your exchange server admin. For gmail and yahoo, you can find that online. For the latter, you will need to modify the script to pass in credentials.
1 Week Ago #5

Expert Mod 2.5K+
P: 3,054

Very interesting. I never knew such a thing was available. Thanks for the tidbit!
1 Week Ago #6

P: 434
That would probably work except. In the references the MSOUTL.OLB is checked if the user uses Outlook, however if they don't have outlook then they get a reference error and the "function not available" shows up. Is there a way to remove the MSOUTL.OLB reference from the references if the user doesn't have outlook installed on their computer.
1 Week Ago #7

P: 434
I like the idea Rabbit, in your example how would you attach a document to this from and could you send to multiple users. I suppose you could just create a loop.
Might give this a test.
What is the 2 for in the sendusing?
1 Week Ago #8

Expert Mod 2.5K+
P: 3,054

Concerning your Post #7, that's what I was talking about error trapping. If someone tries to send something and they get this error, you need to find out the error number and if the DB encounters that error, go to Plan B.
1 Week Ago #9

P: 434
I can trap that error number but going to Plan B means I still would have to eliminate the MSOUTL.OLB reference otherwise the "function not available" would not function. So is there a way in VBA to remove a reference, remember this is a .accdr and I only have the VBA code to try and remove the MSOUTL.OLB reference.
1 Week Ago #10

Expert Mod 10K+
P: 12,315
The CDO object has an AddAttachment method. You just need to supply the path of the file you want to attach.

You can use a loop. You can also supply multiple email addresses for the To property. If you're sending a mass email, a BCC might be better so you don't get reply all spam.

What you see above is pretty much the bare minimum to send an email through an exchange server.
1 Week Ago #11

Expert Mod 10K+
P: 12,315
Send using 2 tells it to use SMTP over the network.
Send using 1 tells it to use SMTP installed on the local computer.
1 Week Ago #12

Expert Mod 2.5K+
P: 3,054
Tom - now i'm beginning to see more of the complexities with this.

I know you can remove references in VBA (References.Remove), but I'm not sure if the user who didn't have Outlook would hit that error first. But, it might be worth a try to remove that reference whenever the DB encounters the said error number.
1 Week Ago #13

Post your reply

Sign in to post your reply or Sign up for a free account.