Reference Libraries

G

Guest

I use excel to control mailing of workbooks automatically using outlook. So
in my excel file I have the Outlook 11.0 reference file added in which is
associated with Outlook 2003, Unfortunately I have people using Outlook 2000
also which is using Outlook 9.0 reference library. When the excel workbook is
run a machine with outlook 2000 every macro errors because the reference to
the Outlook 11.0 library is not found. Is there a way to include backwards
compabtibilty here???????
Please help....
ben
 
F

Fredrik Wahlgren

ben said:
I use excel to control mailing of workbooks automatically using outlook. So
in my excel file I have the Outlook 11.0 reference file added in which is
associated with Outlook 2003, Unfortunately I have people using Outlook 2000
also which is using Outlook 9.0 reference library. When the excel workbook is
run a machine with outlook 2000 every macro errors because the reference to
the Outlook 11.0 library is not found. Is there a way to include backwards
compabtibilty here???????
Please help....
ben

I think so. When you have a reference set, you use what is known as early
binding, Thismeans that you can declare a varible to that object as Dim o As
Outlook.Application without VBA making a complaint. VBA can now make use of
Intellisense to show all the methods offered by Outlook.

I think you should be able to use late binding. This means that you remove
the reference to outlook and then have code similar to this

Dim o As Object
Set o = CreateObject("Outlook.Application")

You won't have Intellisense but the code should now work with either version
as long as you don't try to call a method that exists in one version only.
To make coding easier, do this change as the last step.

/Fredrik
 
B

Bob Phillips

You are referring to late binding, which doesn't bind to the application
type library at development/compile time, but makes multiple calls at
runtime.

Essentially, rather than setting a reference to the type library via
Tools>References, and then declaring an object of type Outlook.Application
or whatever, you create a generic Object variable and create that object
rather than just New.

You lose access to the application's object model and intellisens when you
do this, but there is another way, what I call Develop Early, Release Late.
An example is given (using Outlook) at
http://www.xldynamic.com/source/xld.EarlyLate.html

--

HTH

RP
(remove nothere from the email address if mailing direct)
 
F

Fredrik Wahlgren

Bob Phillips said:
You are referring to late binding, which doesn't bind to the application
type library at development/compile time, but makes multiple calls at
runtime.

Essentially, rather than setting a reference to the type library via
Tools>References, and then declaring an object of type Outlook.Application
or whatever, you create a generic Object variable and create that object
rather than just New.

You lose access to the application's object model and intellisens when you
do this, but there is another way, what I call Develop Early, Release Late.
An example is given (using Outlook) at
http://www.xldynamic.com/source/xld.EarlyLate.html

Develop Early, Release Late ? That sounds like something I want to
remember. Nice!

/Fredrik
 
G

Guest

thanks
I understood about late binding but i did not think about dim and setting
the objects differently
much appreciation.
 
G

Guest

nevermind, stupid me, the worst of all errors, syntax was incorrect for one
variable. sigh. I really need finish changing this project to option
explicit, thanks all
 
B

Bob Phillips

You don't use Option Explicit all the time?

You know you can set that in Tools>Options>Editor tab, Require Variable
Declaration checkbox.

--

HTH

RP
(remove nothere from the email address if mailing direct)
 

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