Microsoft
Software
Hardware
Network
Question : VBA ole object wrapping
Hi,
I'm trying to wrap a OLE object into a class (such as I can add my own events etc.)
Unfortunately, it seems to only work if the OLE Object is manually created.
If it is created in my class or even in the macro that use the object, it goes out of scope at the end of the macro and induces the termination of my wrapping object, even if my object is a global variable.
The following shows this point:
class module called Obj:
Private p_oleCtl As OLEObject
Property Set ActiveXControl(ByVal oleCtl As OLEObject)
Set p_oleCtl = oleCtl
End Property
Property Get ActiveXControl() As OLEObject
Set ActiveXControl = p_oleCtl
End Property
Private Sub Class_Terminate()
MsgBox "end"
End Sub
Regular module:
Dim GlobalObj As Obj
Sub CreateButton()
Call ActiveSheet.OLEObjects.Add
(ClassType
:="Forms.C
ommandButt
on.1")
End Sub
Sub Test()
Call CreateButton
Set GlobalObj = New Obj
Set GlobalObj.ActiveXControl = ActiveSheet.OLEObjects(1)
End Sub
when Test is run, the msgbox "end" is displaid.
It is not displaid if I run CreateButton first and then Test (without the call to CreateButton).
Strangely enough, The same issue occurs even if the wrapped OLE object is a global variable.
Any clue as to why this is like that and how to work around it?
Many Thanks
Answer : VBA ole object wrapping
By adding an activex object you effectively trigger a code reset (because they become part of the vbproject). If you really need to do this, I would suggest using an OnTime macro to assign the variable after you have created it.
Random Solutions
Itunes could not connect to the Itunes Store. The network connection timed out.
VB.NET executable error on Excel SaveAs method when run or submitted by SSIS.
LIKE operator in SQL not working
subquery returned more than 1 value: database vendor code 512
What's the purpose of "MAKEFILE" macro in a makefile?
Access VBA to stop all macros
SSH console: go to specified folder after login
"File Helper" reporting - Your system may have upopenable files - Why?
Shadowing/Overriding in C#
Microsoft Access to VB6 MsFlexfrid