久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

VBA封裝為DLL及調(diào)用

 maoj66 2014-03-08
使用程序:
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工程:
 VBA封裝為DLL及調(diào)用 - 老木 - 老木小屋
 
二、 引用:在VB中對(duì)Excel的引用
 VBA封裝為DLL及調(diào)用 - 老木 - 老木小屋
 不同版本的EXCEL在“引用”窗口里顯示的版本號(hào)也不同:
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及調(diào)用 - 老木 - 老木小屋
 
四、編寫(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è)置,,可以省略】):
 VBA封裝為DLL及調(diào)用 - 老木 - 老木小屋
 
六,、保存工程,、測(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 編輯器”
 VBA封裝為DLL及調(diào)用 - 老木 - 老木小屋

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
 VBA封裝為DLL及調(diào)用 - 老木 - 老木小屋

三,、在工作表中運(yùn)行DLLtest宏即可實(shí)現(xiàn)調(diào)用:
VBA封裝為DLL及調(diào)用 - 老木 - 老木小屋
 


綜上所述,,感覺(jué)封裝DLL的主要步驟是:
①在VB中引用EXCEL;
②編輯代碼(要在對(duì)象前面加上定義的EXCEL變量),;
③在VBE中引用該DLL文件,;
④在VBE的代碼中調(diào)用DLL中的過(guò)程。


參考:dll封裝,,資料

.

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多