1、新建工程
New — Project — ATL Project
勾选Allow merging of proxy/stub code
2、添加接口
右键工程 — Add — ATL Simple Object
3、添加接口函数
类视图中,右键接口 — Add — Add Method
4、添加事件
类视图中,展开类型库,右键连接点接口 — Add — Add Method
5、实现连接点事件
点击确定后,会生成事件代码。
6、触发事件。
STDMETHODIMP CComDllExample::Method1(LONG arg1){// TODO: Add your implementation code hereFire_Event1(2.0);return S_OK;}
在Method1中调用一下生成的Fire_Event1函数。
7、编译工程。
VBA中调用生成的组件
1、打开vba开发工具,添加ComDll组件的引用
通过 工具 — 引用 打开引用管理器。
2、调用代码
Private WithEvents mComDll As ComDllExamplePrivate Sub mComDll_Event1(ByVal arg1 As Single) Debug.Print Str(arg1)End SubPrivate Sub Worksheet_SelectionChange(ByVal Target As Range) Set mComDll = New ComDllExample mComDll.Method1 (20)End Sub
需要注意的地方
a)comdll接口函数参数类型要和VB兼容。 遇到过设置ULONG类型的参数,但是到VBA里面提示类型无法解析,改成LONG就好了。
b)VB里面,使用WithEvents处理对象事件时,还需要单独set一下对象实例。
人生才会更有意义。如果没有梦想,那就托做庸人。