Machine's Think They Outlook 2003 When They Actually Have a Previous Version...

T

Tal

Hello All,

I work for a software development company that utilizes VBA with Word,
Excel, and Outlook to write Construction Management applications. We
recently encountered some customers who received the 'Error in loading
DLL, Error Number 48' message, every time they opened our custom Word
apps. Our application utilizies VBA within Word, and also has some
built-in integration with Outlook. This requires us to make use of the
Outlook Type Library Reference. All of these customers are using
Office 2000 so obviously they should be using the Outlook 9.0 Type
Library in the Project references. After investigation, I studied the
Project References a little closer. The Outlook Type Library was not
listed as missing and was listed as Microsft Outlook 9.0 as it should
have been. I unchecked the reference, saved the file, and then
attempted to reload the reference. When I went back down the list of
available references, the only Outlook reference available was the
Outlook 11.0 Type Library. I found this to be very odd on a system
that does not have Office 2003 installed. After further investigation,
I discovered this registry key:

HKEY_CLASSES_ROOT\TypeLib\{00062FFF-0000-0000-C000-000000000046}\

This is where the Type Library references are stored for what I am
assuming is either Outlook, or MS Office entirely.

**Any input on being able to identify exactly what this type library is
for would be very helpful and any information about how to resolve the
complex id's to know exactly what they are for would also be very
useful information.

Anyway, on the machines where the Error Number 48 is occuring, there
are two folders underneath this reg key. One is usually a 9.0 folder
(referencing MS Office 2000 referencing Office 2K's Type Library) and
one is a 9.2 folder (referencing MS Office 2K3's Type Library). There
are two scenarios where I've seen this happen.

1.) The user has Office 2000 and has installed the Office 2K3 trial,
2.) The user has Office 2000 and some Office 2K3 product like MS
Project 2K3.

All I know is that these two type library keys create a conflict and
Word will try to load an Office 11.0 type library file, even if the
version of Office installed is 2000. In order to resolve this problem,
I've had to remove the 9.2 folder. That is ok for those who had the
2K3 trial installed and have removed it, though I think it is very
suspect that MS didn't remove this folder when the trial was
uninstalled. The problem I have is for those who have a legitimate 2K3
solutions installed (i.e. MS Project 2K3) and may actually need both
Type Library references.

Hopefully this wasn't too confusing and I'll be happy to answer any
questions. I will definitely appreciate any insight or advise into
what can be done about this...if anything.

Tal
 
T

TC

Not really to answer your question, but, when automating Office
applications, it is often better to use late binding - not early
binding as you are currently doing.

early:
dim o as outlook.application ' or whatever.
dim a as outlook.addressbook ' or whatever.

late:
dim o as object
dim a as object

The advantage of late binding is that you do /not/ need a reference to
the relevant type library, and your code will use whatever version of
the other product, that exists on the user's PC. The disadvantage of
late binding is that it is significantly slower. The effect of this can
be anywhere from irrelevant, to showtopper, depending on what you are
doing.

HTH,
TC
 
T

Tal

Thanks much for the info. We actually are updating our files to
perform late binding (where it will not shut us down) in the next
releases. We definitely agree with your standpoint and appreciate the
confirmation. It is random Office configuration bugs that are throwing
us for the largest loops.

Tal
 
T

TC

Also remember you'll need to define any constants that you used to get
from the type libraries.

Eg. previously you said: n = BlahBlah, where BlahBlah came from a
type library. Now you do not reference that library. So you'll need to
define that constant in your code:

const BlahBlah = 99 ' or whatever.

Cheers,
TC
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top