使用程序: 1、Microsoft Office Excel 2003 2,、Microsoft Visual Basic 6.0 案例:在工作表的C1單元格得出A1單元格+B1單元格的值,。 設(shè)計(jì)的VBA代碼: Sub Test() On Error Resume Next Range("C1") = Cells(1, 1) + Cells(1, 2) End Sub 第一部分、使用VB6.0制作DLL文件 一,、 啟動(dòng)VB6.0,,新建一個(gè)ActiveX DLL工程: 二、 引用:在VB中對(duì)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的工程名稱和類模塊名稱 四、編寫(xiě)代碼: 在代碼窗口輸入代碼,,過(guò)程名稱為T(mén)est: Sub Test() On Error Resume Next Dim VBt, YB '定義變量VBt Set VBt = GetObject(, "Excel.Application") '使VBt表示為EXCEL對(duì)象 Set YB = VBt.ActiveSheet '使YB表示為EXCEL的當(dāng)前工作表 '注意要在對(duì)象前加上YB變量以表示是EXCEL當(dāng)前工作表的對(duì)象 YB. Range("C1") = YB.Cells(1, 1).Value + YB.Cells(1, 2).Value End Sub 五,、設(shè)置工程屬性 (為使開(kāi)發(fā)的程序更規(guī)范,可以對(duì)工程屬性加以描述【非必要設(shè)置,,可以省略】): 六,、保存工程,、測(cè)試、生成DLL文件: 1,、保存工程:保存本工程以作為將來(lái)修改代碼和升級(jí)程序的需要; 2,、測(cè)試工程:執(zhí)行快捷工具欄上的“啟動(dòng)”按鈕,檢查是否存在錯(cuò)誤,; 3、生成DLL文件:制作DLL文件,。 第二部分,、調(diào)用DLL文件 一,、在VBE中調(diào)用DLL文件 調(diào)用DLL文件,,要分兩步走:先注冊(cè)DLL,再引用DLL,。 1,、 注冊(cè)DLL(使之放在可引用的列表上): 注冊(cè)DLL也可以使用代碼來(lái)做,但那樣比較復(fù)雜,,也存在很多問(wèn)題,,建議一般使用手工來(lái)注冊(cè),。 (這里應(yīng)該先設(shè)計(jì)好DLL文件放在硬盤(pán)的位置,,因?yàn)楹竺嬉肈LL文件的代碼也應(yīng)該是指向這個(gè)位置的。) 先打開(kāi)EXCEL,再打開(kāi)“Visual Basic 編輯器” 2,、引用DLL(這樣每次打開(kāi)打開(kāi)文件時(shí),就不必再去那個(gè)引用列表里打個(gè)勾了) ①DLL文件放在與EXCEL文件同一個(gè)文件夾內(nèi) 在ThisWorkbook中添加如下代碼: Private Sub Workbook_Open() '打開(kāi)文件時(shí)加載要引用的DLL文件 shell "Regsvr32 /s " & Chr(34) & ThisWorkBook.path & "\VBADLL.dll"& Chr(34) End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) '關(guān)閉文件之前卸載引用的DLL文件 shell "Regsvr32 /s /u " & Chr(34) & ThisWorkBook.path & "\VBADLL.dll"& Chr(34) End Sub '/s參數(shù)是防止出現(xiàn)確認(rèn)窗口,;/u參數(shù)為取消引用,。 ②DLL文件放在固定文件夾內(nèi),如果你有多個(gè)XLS文檔需要使用到同一個(gè)DLL文件,,但這些XLS文檔又不可能都與DLL文件放在同一個(gè)文件夾,,則需要將DLL文件放置到一個(gè)固定文件夾,這樣,,只需要將上面的代碼 ThisWorkBook.path & "\VBADLL.dll" 換成一個(gè)固定位置即可。 注意:有時(shí)間可能出現(xiàn)某些錯(cuò)誤,,如提示“變量類型未定義”等,,可能是引用后改變了文件的位置或改變了文件的名稱,,即使再重新再改回來(lái)也可能會(huì)出現(xiàn)這些問(wèn)題,,所以,,在正確注冊(cè)及引用以后,最好不要再去修改這個(gè)DLL文件,。如果出現(xiàn)問(wèn)題,,重新注冊(cè)一次,保證注冊(cè)的DLL文件的位置正確即可,。 二,、新建一個(gè)模塊,輸入調(diào)用DLL文件程序的過(guò)程: Sub DLLtest() Dim ABC As New VBAtest '定義ABC為新類,,即為DLL文件中的類模塊VBAtest ABC.Test '調(diào)用DLL中提供的過(guò)程,,來(lái)完成原來(lái)在VBA中的功能,起到隱藏代碼的效果 Set ABC = Nothing '釋放類資源 End Sub 三,、在工作表中運(yùn)行DLLtest宏即可實(shí)現(xiàn)調(diào)用: 綜上所述,,感覺(jué)封裝DLL的主要步驟是: ①在VB中引用EXCEL; ②編輯代碼(要在對(duì)象前面加上定義的EXCEL變量),; ③在VBE中引用該DLL文件,; ④在VBE的代碼中調(diào)用DLL中的過(guò)程。 參考:dll封裝,,資料 . |
|