使用程式: 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工程:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2QvwVe0lmdhJ3ZvwFM38CXlZHbvN3cpR2Lc1TPB10QGtWUCpEMJ9CXsxWam9CXwADNvwVZ6l2c052bm9CXUJDT1wkNhVzLcRnbvZ2LcRHcIpFbaNjYzRGWjZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39zMxMTO1cTM3EDNxMDM1EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
二、 引用:在VB中對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的工程名稱和類子產品名稱
四、編寫代碼: 在代碼視窗輸入代碼,過程名稱為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
五、設定工程屬性 (為使開發的程式更規範,可以對工程屬性加以描述【非必要設定,可以省略】):
六、儲存工程、測試、生成DLL檔案: 1、儲存工程:儲存本工程以作為将來修改代碼和更新程式的需要; 2、測試工程:執行快捷工具欄上的“啟動”按鈕,檢查是否存在錯誤; 3、生成DLL檔案:制作DLL檔案。
第二部分、調用DLL檔案
一、在VBE中調用DLL檔案 調用DLL檔案,要分兩步走:先注冊DLL,再引用DLL。 1、 注冊DLL(使之放在可引用的清單上):
注冊DLL也可以使用代碼來做,但那樣比較複雜,也存在很多問題,建議一般使用手工來注冊。 (這裡應該先設計好DLL檔案放在硬碟的位置,因為後面引用DLL檔案的代碼也應該是指向這個位置的。) 先打開EXCEL,再打開“Visual Basic 編輯器”
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
三、在工作表中運作DLLtest宏即可實作調用:
綜上所述,感覺封裝DLL的主要步驟是:
①在VB中引用EXCEL;
②編輯代碼(要在對象前面加上定義的EXCEL變量);
③在VBE中引用該DLL檔案;
④在VBE的代碼中調用DLL中的過程。
親測可用,轉自 http://ych4943.blog.163.com/blog/static/376967502012842360885/