天天看點

将VBA操作封裝為DLL元件并在EXCEL中調用

使用程式: 1、Microsoft Office Excel 2003 2、Microsoft Visual Basic 6.0

案例:在工作表的C1單元格得出A1單元格+B1單元格的值。 設計的VBA代碼: Sub Test()     On Error Resume Next     Range("C1") = Cells(1, 1) + Cells(1, 2) End Sub

第一部分、使用VB6.0制作DLL檔案

一、 啟動VB6.0,建立一個ActiveX DLL工程:  

将VBA操作封裝為DLL元件并在EXCEL中調用

  二、 引用:在VB中對Excel的引用  

将VBA操作封裝為DLL元件并在EXCEL中調用

 不同版本的EXCEL在“引用”視窗裡顯示的版本号也不同: EXCEL2000(Microsoft Office 9.0) EXCEL2002(Microsoft Office 10.0),即ExcelXP EXCEL2003(Microsoft Office 11.0) EXCEL2007(Microsoft Office 12.0) EXCEL2010(Microsoft Office 14.0) EXCEL2013(Microsoft Office 15.0)

三、 修改ActiveX DLL的工程名稱和類子產品名稱  

将VBA操作封裝為DLL元件并在EXCEL中調用

  四、編寫代碼: 在代碼視窗輸入代碼,過程名稱為Test: Sub Test()     On Error Resume Next     Dim VBt, YB    '定義變量VBt     Set VBt = GetObject(, "Excel.Application")    '使VBt表示為EXCEL對象     Set YB = VBt.ActiveSheet    '使YB表示為EXCEL的目前工作表

    '注意要在對象前加上YB變量以表示是EXCEL目前工作表的對象     YB. Range("C1")  = YB.Cells(1, 1).Value + YB.Cells(1, 2).Value End Sub

五、設定工程屬性 (為使開發的程式更規範,可以對工程屬性加以描述【非必要設定,可以省略】):  

将VBA操作封裝為DLL元件并在EXCEL中調用

  六、儲存工程、測試、生成DLL檔案: 1、儲存工程:儲存本工程以作為将來修改代碼和更新程式的需要; 2、測試工程:執行快捷工具欄上的“啟動”按鈕,檢查是否存在錯誤; 3、生成DLL檔案:制作DLL檔案。

第二部分、調用DLL檔案

一、在VBE中調用DLL檔案 調用DLL檔案,要分兩步走:先注冊DLL,再引用DLL。 1、 注冊DLL(使之放在可引用的清單上):

注冊DLL也可以使用代碼來做,但那樣比較複雜,也存在很多問題,建議一般使用手工來注冊。 (這裡應該先設計好DLL檔案放在硬碟的位置,因為後面引用DLL檔案的代碼也應該是指向這個位置的。)   先打開EXCEL,再打開“Visual Basic 編輯器”  

将VBA操作封裝為DLL元件并在EXCEL中調用

2、引用DLL(這樣每次打開打開檔案時,就不必再去那個引用清單裡打個勾了) ①DLL檔案放在與EXCEL檔案同一個檔案夾内 在ThisWorkbook中添加如下代碼: Private Sub Workbook_Open() '打開檔案時加載要引用的DLL檔案 shell "Regsvr32 /s " & Chr(34) & ThisWorkBook.path & "\VBADLL.dll"& Chr(34) End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean)'關閉檔案之前解除安裝引用的DLL檔案 shell "Regsvr32 /s /u " & Chr(34) & ThisWorkBook.path & "\VBADLL.dll"& Chr(34) End Sub '/s參數是防止出現确認視窗;/u參數為取消引用。

②DLL檔案放在固定檔案夾内,如果你有多個XLS文檔需要使用到同一個DLL檔案,但這些XLS文檔又不可能都與DLL檔案放在同一個檔案夾,則需要将DLL檔案放置到一個固定檔案夾,這樣,隻需要将上面的代碼 ThisWorkBook.path & "\VBADLL.dll" 換成一個固定位置即可。

注意:有時間可能出現某些錯誤,如提示“變量類型未定義”等,可能是引用後改變了檔案的位置或改變了檔案的名稱,即使再重新再改回來也可能會出現這些問題,是以,在正确注冊及引用以後,最好不要再去修改這個DLL檔案。如果出現問題,重新注冊一次,保證注冊的DLL檔案的位置正确即可。

  二、建立一個子產品,輸入調用DLL檔案程式的過程: Sub DLLtest()     Dim ABC As New VBAtest      '定義ABC為新類,即為DLL檔案中的類子產品VBAtest     ABC.Test    '調用DLL中提供的過程,來完成原來在VBA中的功能,起到隐藏代碼的效果     Set ABC = Nothing   '釋放類資源 End Sub  

将VBA操作封裝為DLL元件并在EXCEL中調用

三、在工作表中運作DLLtest宏即可實作調用:

将VBA操作封裝為DLL元件并在EXCEL中調用

綜上所述,感覺封裝DLL的主要步驟是:

①在VB中引用EXCEL;

②編輯代碼(要在對象前面加上定義的EXCEL變量);

③在VBE中引用該DLL檔案;

④在VBE的代碼中調用DLL中的過程。

親測可用,轉自 http://ych4943.blog.163.com/blog/static/376967502012842360885/