预览加载中,请您耐心等待几秒...
1/5
2/5
3/5
4/5
5/5

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

VB封装DLL实例讲解(一) DLL基本概念 (一)概念 DLL即动态链接库(DynamicLinkLibrary),是由可被其它程序调用的函数集合组成的可执行文件模块。DLL不是应用程序的组成部分,而是运行时链接到应用程序中。 (二)主要优点: 1、多个应用程序可以共享一个DLL,而且当多个应用程序调用库的同一个函数时,可执行文件中装入的只是该函数的内存地址,从而节省内存和磁盘空间; 2、使用动态链接库易于我们维护用户程序,即使对动态链接库进行修改也不会影响用户程序; 3、从ACCESS角度而言,还可以更好的确保核心代码的安全。 用VB封装VBA代码,构建自定义的DLL动态链接库 (一)ACCESS中实例代码 下面是一个“快速提取字符串中数字.mdb”实例(该实例在文件包中),单击“提取结果”按钮,将文本框中的数字在弹出消息显示出来。 我将就这个实例演示如何将该实例VBA代码封装成为DLL。 按钮单击事件代码如下: PrivateSubCmdFindnumber_Click() DimstrMAsString'初始字符串 DimstrOutAsString'输出字符串变量 DimI strM=Me.Text1 '从第一个字符向最后一个字符循环,以提取每个字符 ForI=1ToLen(strM) '判断是否为0到9字符,是则赋值输出 IfMid(strM,I,1)Like"[0-9]"Then strOut=strOut&Mid(strM,I,1) EndIf NextI '用MsgBox函数进行输出测试 MsgBoxstrOut EndSub 以上代码还不能直接用于封装,须将其修改成为公用函数(过程) (二)VB封装实例中VBA代码 步骤一:在VB编辑窗中,点菜单【文件】-【新建工程】,打开新建工程窗口 1、点选ActiveXDLL 2、点确定 步骤二:修改工程名,这即生成的DLL库名 1、修改工程名为:我的动态库 步骤三:修改类名 1、改类名为:提取数字 步骤四:在代码窗口输入如下代码。将ACCESS中的单击事件代码,略做修改成为一个公用函数,然后复制到VB代码编辑窗口 代码如下 '将这前的ACCESS代码改成一个公用函数 '输入:strPutString字符串变量,需分离数字的字符串 '输出:fFindNumber字符串变量,得到的数字字符 PublicFunctionfFindNumber(strPutStringAsString)AsString DimstrOutAsString'输出字符串变量 DimI '从第一个字符向最后一个字符循环,以提取每个字符 ForI=1ToLen(strPutString) '判断是否为0到9字符,是则赋值输出 IfMid(strPutString,I,1)Like"[0-9]"Then strOut=strOut&Mid(strPutString,I,1) EndIf NextI '数字输出 fFindNumber=strOut EndFunction 步骤五:编译DLL,点菜单【文件】-【生成我的动态库.dll】,VBA代码封装DLL就完成了。 在mdb中调用自定义DLL动态链接库 (一)新建数据库及窗体 新【快速提取数字(DLL)实例.mdb】数据库,新建一个窗体【frmMain】,在窗体添文本框【text0】,按钮【CmdFindNum】,Caption属性:“提取数字”(见下图) (二)引用【我的动态库.dll】库 按【Alt+F11】打开VBE窗口,点菜单【工具】-【引用】,打开引用对话框,完成对我们自己编译的DLL的引用。 2、选择引用的DLL 3、点打开 1、点浏览 4、点确定 (三)在【CmdFindNum】按钮单击事件中加入如下代码。 PrivateSubCmdFindNum_Click() '申明自定义类 DimMyFindNumAs提取数字 DimstrOutAsString '实例化"提取数字类"对象 SetMyFindNum=New提取数字 '将函数输出结果赋值给自定义字符串变量 strOut=MyFindNum.fFindNumber(Text0) '在消息框中显示 MsgBox"你提取的数字为:"&strOut,vbInformation,"江羽提示:" EndSub 点击保存后,你就可以运行一下窗体测试你的成果了 本文实例见实例包,下载测试如果提示错误,请重新对自定义类库进行引用。 本文只是通过一个简单的实例演示了,如何通过VB封装一般的VBA中代码,因为该代码中并未涉及到ACCESS应用程序对象,所以在VB中没有对ACCESS对象类库进行引用,另外实例