VB封装DLL实例讲解_access_excel_word_代码保护..doc
文本预览下载声明
VB封装DLL实例讲解(一讲)
/post/107.html
DLL基本概念
(一)概念
DLL即动态链接库(Dynamic Link Library),是由可被其它程序调用的函数集合组成的可执行文件模块。DLL不是应用程序的组成部分,而是运行时链接到应用程序中。
(二)主要优点:
1、多个应用程序可以共享一个DLL,而且当多个应用程序调用库的同一个函数时,可执行文件中装入的只是该函数的内存地址,从而节省内存和磁盘空间;
2、使用动态链接库易于我们维护用户程序,即使对动态链接库进行修改也不会影响用户程序;
3、从ACCESS角度而言,还可以更好的确保核心代码的安全。
?
二、?用VB封装VBA代码,构建自定义的DLL动态链接库
(一)ACCESS中实例代码
下面是一个“快速获取数字(Acc).mdb”实例(该实例在文件包中),单击“提取结果”按钮,将文本框中的数字在弹出消息显示出来。
我将就这个实例演示如何将该实例VBA代码封装成为DLL。
?
?????
?
?按钮单击事件代码如下:
Private Sub CmdFindnumber_Click()
?Dim strM?? As String??? ?初始字符串
?Dim strOut?As String??? ?输出字符串变量
?Dim I
?
?strM = Me.Text1
?从第一个字符向最后一个字符循环,以提取每个字符
?For I = 1 To Len(strM)
?????判断是否为0到9字符,是则赋值输出
????? If Mid(strM, I, 1) Like [0-9] Then
???????? strOut = strOut Mid(strM, I, 1)
????? End If
?Next I
??用MsgBox函数进行输出测试
?MsgBox strOut
End Sub
?? M以上代码还不能直接用于封装,须将其修改成为公用函数(过程)
?
(二)VB封装实例中VBA代码
步骤一:在VB编辑窗中,点菜单【文件】-【新建工程】,打开新建工程窗口
??
步骤二:修改工程名,这即生成的DLL库名
1、修改工程名为:我的动态库
步骤三:修改类名
1、改类名为:提取数字
步骤四:在代码窗口输入如下代码。将ACCESS中的单击事件代码,略做修改成为一个公用函数,然后复制到VB代码编辑窗口
?
?
?代码如下
将这前的ACCESS代码改成一个公用函数
?输入:strPutString 字符串变量,需分离数字的字符串
?输出: fFindNumber字符串变量,得到的数字字符
?Public Function fFindNumber(strPutString As String) As String
?? Dim strOut?As String?? ??输出字符串变量
?? Dim I
?
?? 从第一个字符向最后一个字符循环,以提取每个字符
?? For I = 1 To Len(strPutString)
???? ?判断是否为0到9字符,是则赋值输出
?????? If Mid(strPutString, I, 1) Like [0-9] Then
???????? strOut = strOut Mid(strPutString, I, 1)
?????? End If
?? Next I
??数字输出
?? fFindNumber = strOut
?End Function
?
步骤五:编译DLL,点菜单【文件】-【生成我的动态库.dll】,VBA代码封装DLL就完成了。
?
三、?在mdb中调用自定义DLL动态链接库
?
(一)新建数据库及窗体
新建【快速提取数字(DLL)实例.mdb】数据库,新建一个窗体【frmMain】,在窗体添文本框【text0】,按钮【CmdFindNum】,Caption属性:“提取数字”(见下图)
?
(二)引用【我的动态库.dll】库
按【Alt+F11】打开VBE窗口,点菜单【工具】-【引用】,打开引用对话框,完成对我们自己编译的DLL的引用。
?
?
??
(三)在【CmdFindNum】按钮单击事件中加入如下代码。
Private Sub CmdFindNum_Click()
??申明自定义类
?Dim MyFindNum As 提取数字
?Dim strOut As String
?
??实例化提取数字类对象
?Set MyFindNum = New 提取数字
??将函数输出结果赋值给自定义字符串变量
?strOut = MyFindNum.fFindNumber(Text0)
?
??在消息框中显示
?MsgBox 你提取的数字为: strOut, vbInformat
显示全部