设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 7043|回复: 12
打印 上一主题 下一主题

[模块/函数] Access菜鸟七大邪门武器之二——免注册使用ActiveX控件

[复制链接]
跳转到指定楼层
1#
发表于 2013-11-3 09:37:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ganlinlao 于 2013-11-3 09:46 编辑

DirectCOM 是个好东西!有了它,你就可以使用VBA直接从ActiveX DLL文件创建对象,这意味着用office的VBA可以
开发后期绑定的插件,而不需通过RegSvr32命令对该DLL文件进行注册,不需直接引用该DLL。


使用方法:

       1、 把DirectCOM.dll 复制到你所写的access程序目录中,或system目录
       2、在你的vba模块中建立一个 DirectCOM.bas的模块。
  3、先使用 DirectCom_Load() 加载DLL,并获取句柄
  4、使用 DirectCom_Create() 创建对象(注意该对象为Object类型)
  5、最后使用 DirectCom_Free() 释放DLL

    就这么简单!

DirectCom.bas的代码如下:

'@说明   加载动态链接库
'@参数     动态链接库文件名
'@返回值    成功返回句柄,失败返回0
Public Declare Function DirectCom_Load Lib "kernel32" Alias "LoadLibraryA" ( _
    ByVal lpLibFileName As String _
) As Long


'@说明   释放动态链接库
'@参数     动态链接库句柄
'@返回值    非0表示成功,0表示失败
Public Declare Function DirectCom_Free Lib "kernel32" Alias "FreeLibrary" ( _
    ByVal hLibModule As Long _
) As Long


'@说明   直接从ActiveX DLL文件创建COM对象
'@参数     ActiveX DLL 文件名
'@参数     类名
'@返回值    成功返回类的实例,失败返回Nothing
Public Declare Function DirectCom_Create Lib "DirectCOM" Alias "GETINSTANCE" ( _
    FName As String, _
    className As String _
) As Object


'@说明   获取DirectCOM最近的错误信息
'@返回值    错误信息文本
Public Declare Function DirectCom_GetError Lib "DirectCOM" Alias "GETINSTANCELASTERROR" ( _
) As String

例如:

    1、如你有一个ActiveX的TestDLL,里面有一个类,名为 TestClass,有一方法名为 ShowAbout
    2、在access中,将DirectCOM.bas复制到你的模块中
    3、输入以下代码到某按钮事件

       Dim hTestDll as Long
       Dim MyObject as Object
       hTestDll = DirectCom_Load("TestDLL.dll") '加载DLL
       if hTestDll then            '如果加载成功
           set MyObject = DirectCom_Create("TestDLL.dll", "TestClass") '直接创建对象,注意该地方只需指明类名即可
           if not Myobject is nothing then '如果创建成功
               MyObject.ShowAbout         '执行类的方法
           end if
           set Myobject = nothing         '释放对象
           DirectCom_Free hTestDll '释放DLL
       end if

备注:
     惊闻access窗体无法在运行中动态创建控件,不禁嘘嘘感叹。
     出手未捷鸟先死,Access频寒冬瓜心

附上DirectCom.dll
http://pan.baidu.com/s/1xLA3T

本帖被以下淘专辑推荐:

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享分享 分享淘帖1 订阅订阅

点击这里给我发消息

2#
发表于 2013-11-3 10:36:19 | 只看该作者
顶起,这个比使用纯代码更加稳定

点击这里给我发消息

3#
发表于 2013-11-3 10:44:25 | 只看该作者
可是之一呢?

点击这里给我发消息

4#
发表于 2013-11-3 17:37:56 | 只看该作者
赞一个!
回复

使用道具 举报

点击这里给我发消息

5#
发表于 2013-11-4 09:20:24 | 只看该作者

我也纳闷了,楼主只发一个主题贴,怎么就之二了呢?

点击这里给我发消息

6#
发表于 2013-11-4 10:15:04 | 只看该作者
之一被楼主吃了!{:soso_e120:} 这是好东西,必须顶起
7#
发表于 2013-11-15 23:30:25 | 只看该作者
这东西有点深,用不了。

点击这里给我发消息

8#
发表于 2015-5-14 00:12:10 | 只看该作者
不错!好文章!

点击这里给我发消息

9#
发表于 2015-5-14 06:25:19 来自手机 | 只看该作者
好文章.赞一个
10#
发表于 2015-5-28 17:26:08 | 只看该作者
好贴!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-19 11:30 , Processed in 0.111836 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表