Mark,
New uses early binding. When you declare something As the particular object
type, and use the New keyword, you are telling the compiler to go through
the specific library interface to that object. Because you've referenced
this in the VBA Tools>References settings, the compiler can read the typelib
file, and knows how to "talk" to that object. Because this is done at
compile time, not run time, execution is much faster.
CreateObject uses late-binding. When you declare something As Object and use
CreateObject, VBA has no idea what object you're dealing with. Thus, the
compiler has to go through the IUnknown interface. This returns an array of
pointers to all the other interfaces supported by the object. Once those
interface pointers are known, VBA then goes through IDispatch to determine
the specific property or method to actually call .All of this takes a great
deal of system overhead and can make your code execute substantially slower.
In Summary, New is quicker, and provides IntelliSense when developing, but
requires the type library to be linked.joined/referenced (whatever you want
to call it) to your project. CreateObject is slower, requires more on the
developer's part (you need to know library constant values for instance),
but can be more flexible, especially when distributing to multiple platforms
where there may be different versions of the library.
--
HTH
Bob Phillips
... looking out across Poole Harbour to the Purbecks
(remove nothere from the email address if mailing direct)