VB封裝DLL實例(一)

正 文:

一、  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)

     '判斷是否爲09字符,是則賦值輸出

      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)

     '判斷是否爲09字符,是則賦值輸出

       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, vbInformation, "江羽提示:"

End Sub

 

點擊保存後,你就可以運行一下窗體測試你的成果了

M本文實例見實例包,下載測試如果提示錯誤,請重新對自定義類庫進行引用。

 

本文只是通過一個簡單的實例演示了,如何通過VB封裝一般的VBA中代碼,因爲該代碼中並未涉及到ACCESS應用程序對象,所以在VB中沒有對ACCESS對象類庫進行引用,另外實例中只是簡單演示了,如何手動實現對DLL的註冊引用,在後續文章中我將就如何實現DLLACCESS應用程序對接及DLL的自動註冊及引用結合實例進行講解。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章