Late binding with VBIDE

T

Tony Seiscons

Is late binding possible with the VBIDE. For example I'd like to be able
to:

Dim MyObj as Object

and then

Set MyObj as New CreateObject("VBIDE.VBComponent")

rather than Dim MyObj as New VBIDE.VBComponent

but I get Run time error '429', ActiveX component can't create object, even
if I have a reverence set to Microsoft Visual Basic for Applications
Extensibility 5.3.

I can do this with the Scripting.FileSystemObject. Why not with this?
Does this mean that I will either have to instruct a user to add the
reference or use an installer to do it via the registry if I want to use
these functions on distributed software.

I found a discussion from 2002-12-09 which Chip Peterson and Rob Bovey
describe how late and early binding work however it doesn't explain the
above.


Tony
 
T

Tony Seiscons

Just answered my own question again (More searches in the news group!)
I should be doing this

Dim MyObj as Object

And then

Set MyObj = ThisWorkbook.VBProject.VBComponents

and I also note that

Set MyObj = CreateObject("VBIDE.VBComponent")

I was using

Set MyObj as New CreateObject("VBIDE.VBComponent")

which doesn't work

As I said below I have found a lot of info about early and late binding in
another discussion so I'll study that to try to understand the differences
between the various syntax.

Tony



Dim
 
B

Bob Phillips

You don't say what you want to do with the component, but this shows how to
delete a module with late-binding

Dim VBComp As Object

Set VBComp = ThisWorkbook.VBProject.vbcomponents("Module2")
ThisWorkbook.VBProject.vbcomponents.Remove VBComp
 

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