版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、VB封裝ExcelVBA成DLL技巧2010-08-2010:24:41|分類:IT|字號訂閱宏通軟件工作室:封裝ce成DLL技巧使用在iXP、ce環(huán)境下制作、測試通過。一、啟動(dòng):執(zhí)行:“文件夾(F)”“新建(N)”選擇“ActiveXDLL”,如下圖:口生2V汞刖工程足.命打H翱四1昌図I昵IActivolX檔S11tiveX35件鬲建工程AtitaYoXDLLActiveXEXE口生2V汞刖工程足.命打H翱四1昌図I昵IActivolX檔S11tiveX35件鬲建工程AtitaYoXDLLActiveXEXE件妙刪叫視團(tuán)豹工程格式辺調(diào)試運(yùn)行査誼切圖袁備工.程1一IxcrcsoftVisua
2、lBasicL設(shè)計(jì)屋保捍工程導(dǎo)工妊另臣左厲)Ctrl+O1瞬用孫持租序易拆陸ESE昨向呂営理向?qū)ctavex文皆聰二、引用:二、引用:中對ce的引用執(zhí)行:“工程(P)”“引用(N)”Excel2中0.MicrosoftExcel9.0MicrosoftOffice9.0Excel2中0.MicrosoftExcel:.MicrosoftOffice:.選擇所要引用的項(xiàng)目:如下圖ectLibjectLibrarybjectLibraryObjectLibrary確宦陽涓引用工桂1HtcrtfeoflUffiuE2.口確宦陽涓引用工桂1HtcrtfeoflUffiuE2.口QgectUbrary
3、定恆C:-MrsaftOfficeZDaOOffiKjiEog.dll礙百標(biāo)薩wLllirflyv再殆,Cell定恆;C.-Jflyso.ftuOfficfcZOOaafficeEKCEL9.OLD語言;創(chuàng)運(yùn)警引叭陽5僭對*誦引用VisualuighppLi嘻,lio15a*ViaiLalczianont!rt4iobjactscuidpre-oqdure7Visualfiasicobjctsjj-rocedmes2O3-AcreTtiii9.ggEjjau1:Ljbrwz頁二Cn?fat1.0tBT*hyIASEJlilLUiy/lotoca1_UJypsLibraryAallvoIETAc
4、tiveSeta.kativeLosfl.0T阿hA2*LevaMw*lbcon-ta-Actsve/DU.topei“tzj1n蘭刑=5-k/tiz三、編寫代碼:、將工程默認(rèn)名稱“工程1”,改為“zygtest”,將類模塊默認(rèn)名稱“Classi”,改為“zyg365”,、2在類模塊的代碼編輯區(qū)寫入代碼:如下圖3模塊名稱為“hongtong”,代碼如下在中編寫代碼時(shí):要注意以下聲名DimXLAPPAsObjectetXLAPPGetObject(,(Excel.Alaton代碼中引用對象,如eCell等,前面要加“XLAPP.”((或按照hongto中的格式編寫。)hongtong(exelA
5、AsNewExcel.Alaton(exelWorkBookAsExel.ooo(exelWorksheetAsExcel.osheetetexcelWorkBookeelA創(chuàng)建新工作簿oosetexcelWorksheeteelooo.heets(eelWosheet.Cells的2宏,通(3()(=寫(入數(shù)(據(jù)((eelWosheet.Cells的3,(4)(與入數(shù)據(jù)365(eelAp.Visible顯示eee界面,用于調(diào)試(eelWoBook.PrintP打印預(yù)覽(eelWoBook.Print打印輸出(exelWoBook.SaveueexcelWorkBook.Close關(guān)閉工作薄e
6、elA.t退出eel四、工程屬性設(shè)置:(可以不設(shè)置,本步驟可以省略)為了使自己開發(fā)的程序更規(guī)范,可以對本工程的屬性加以描述:如下圖4執(zhí)行:“工程(P)”一一“工程1屬性(E)”(當(dāng)前工程中為:“zygtest屬性(E)”)五、保存工程、測試、打包生成l文件:1、保存:單擊保存,保存到一個(gè)文件夾中;2、測試:執(zhí)行工具欄上的“啟動(dòng)”(右向的三角圖標(biāo))按鈕,檢查是否存在錯(cuò)誤;3打包生成l文件:執(zhí)行:“文件(F)”一一“生成工程1.dll(K)”(當(dāng)前工程中為:“zygtest.dll”),重命名為“zyg.dll”,至此,l文件制作結(jié)束。六、在Eel工程中引用、調(diào)用zyg.dll文件:如下圖i引用z
7、yg.dll文件:首先在的lB窗口中,執(zhí)行“工具(T)”一一“引用(R)”在“引用”對話框中,單擊“瀏覽(B)”按鈕,找到“zyg.dll”文件一一“確定”即可。在工作簿事件中,編寫代碼:工作簿啟動(dòng)時(shí),注冊“zyg.dll”控件,工作簿關(guān)閉時(shí),反注冊“zyg.dll”控件:在T中:注冊、引用zyg.dllen()ellRegs3BA.Chr(34)&ThEndWorkbook_Bef反注冊zyg(dlllBolellRegsvr32/u/sB.(3)TndSub、編寫調(diào)用zyg.dll中代碼的模塊:ubtest()zjfeVB中類模塊名稱365輸入完后,敲空格鍵,直接出現(xiàn)選擇列表框,從中選擇“
8、zyg365”可任意命名kk.gg為B中要執(zhí)行的模塊的名稱:輸入完后,直接出現(xiàn)選擇列表框,從中選擇“zyg365”為你的B中的過程名稱,從列表中選的釋放類資源gndSub另一方法另一個(gè)版本:1、本比IE)圖1就是vt拓.0茬桌面的圖標(biāo)雙茁它2、彈HI窗口庇先選擇ActiveXDLL(圖2的紅框人再點(diǎn)擊打開(圖2的藍(lán)框)3、赴個(gè)名(圖3藍(lán)色框內(nèi)文字改為ABC)4、先保存一下.桌面新建個(gè)文件夾點(diǎn)擊圖3紅和豐的保存標(biāo)志,彈出切存為對話札選擇桌面雙擊剛剛建方的那個(gè)文件夾(圖4藍(lán)邑框)保存(圖4紅色框用保存氣馬代碼.模塊型輸入下而代碼Subdef()DimELAsObjectSetEL=GetObjec
9、t(,Excel.Applicationfl)WithEL.ActiveSheetCe11s(l,3)=.CellsfL1)&.Ce11s(l,2)EndWithSetEB=NothingEndSub(如圖5所小)點(diǎn)擊文件(圖5紅色框),在出現(xiàn)的卜扌)菜m中點(diǎn)擊/成工程血(默認(rèn)保仔位比川擊確定年此,D1I就制作兄成了四使用dllI*新建_個(gè)excel,Al單兀格輸入你11田1單兀格輸入”好”2打卄VBE,丁具引小瀏覽找到剛剛創(chuàng)建的文件夾點(diǎn)苗工羽dl.dlk圖砒慮擊打開點(diǎn)擊確定3插入一個(gè)模塊,輸入卜血代碼SubtestODimaAslewABCaJeiSeta=NothingEndSub4.運(yùn)牛
10、l卜代碼Cl中兀格Hi觀”你好”年此,個(gè)山制作到使HJdll的簡印小例金部完成用DLL封裝VBA本文川簡例-來演小如何將正常和VBA中:運(yùn)仃的代碼移植到VB制作的DLL中上,并介紹如何和VBA中進(jìn)f調(diào)川這僅僅是最初級的介紹,希里能對此內(nèi)容膽了解的版友們-匹幫助,而.掌握該技術(shù)的FANS們定金對以跳過木文。先來了解一卜什么是DLL:DLL是DynamicLinkLibrary的縮意為動(dòng)態(tài)鏈接庫。/kWindows中.許多應(yīng)川和斥并不是個(gè)完整的可執(zhí)行文件.它們被分割成一些相對獨(dú)工的動(dòng)態(tài)鏈接恥即DLL文件放世于系統(tǒng)中。沖我們執(zhí)行某-t程序時(shí),相應(yīng)的DLL文件就會(huì)被調(diào)川.-個(gè)應(yīng)川程序吋有多個(gè)DLL文件
11、.個(gè)DLL文件也可能被兒個(gè)應(yīng)川和斥所共川:這樣的DLL文件被稱為W7DLL文件。DLL文件一般被存放1C:WindowsSystein冃親下。叫此,DLL丈件吋以石作是一個(gè)桂序擴(kuò)展函數(shù)片成為應(yīng)出軟件屈序的外J土接口就象我們常在程序中出的WIDOWSAPI.就是如此它是微軟捉供給桂序員的函數(shù)推庫.用廣只需了解函數(shù)功能調(diào)用規(guī)則就I!以拿來便用,而不用知道也不希要知道具休源碼也正怙I為此,現(xiàn)在許多VBAJ|發(fā)齊在保護(hù)其代碼時(shí)也多采用此法來維護(hù)其合法權(quán)益現(xiàn)在丿f始.假如我們要編這么一段代碼;將工作表Sheetl的Al單元格的數(shù)值打B1巾一元格的數(shù)值相加填厲到C1單元格去(嗯嗯.這是極簡單的了,貝是用來
12、說明問題h在VBA模塊我們川以編9這樣的代碼;SubtestOOnErrorResumeNextDimi,jAsIntegerWithWorksheetsCSheetl)i=Cells(I*IJ.Valuej=Celk(lh2).ValutGlk(I*3)=i+jEndW)thFndSub執(zhí)廿上面的宏會(huì)發(fā)現(xiàn)Cl單元格自動(dòng)會(huì)岀現(xiàn)Al+Bl的結(jié)果了,下而我們在3)=i+jEndWithEndSub執(zhí)行上面的宏,會(huì)發(fā)現(xiàn)Cl單元格自動(dòng)會(huì)出現(xiàn)AI+BI的結(jié)果了下面我們在VB中住成包含以上宏功能的函數(shù)(程序)的DLLX件。打HV乩“文件”-新建工程”-ActiveXDLL此時(shí)會(huì)彈出cWl模塊代碼窗口*將如
13、下代碼寫入;Subtest()OnErrorResumeNextDiimi*jAsIntegerDimEBSeiEEGelObjecl(bExcelhApplicationN)WithEBActiveSheeti=.Cells(l,1).Valuej=Cells(1,2).ValueCells(lt3)=i+jEndWithSetEB=NothingEndSub冰工成DLL之前.注意確保VB里“工程-NIMPISMicrosoftExcel9.0O可zLibrary1前面的勾已打上,再就是正確設(shè)定好DLL描述打名稱,朶中“工程拶-“工程屬性”T】出描述S里面可以寫上你的DLL功能名稱或簡介或版
14、本號“視圖屬性S設(shè)定名稱為你在其他開發(fā)環(huán)境中欲使出的引用名稱.殳叮呦坯汽現(xiàn)在點(diǎn)擊知i文件“成山巴會(huì)彈川路徑U文件取名乳按你的意思選擇9輸入好路徑和即將心成的DLL文件名+按確就會(huì)匯成DLL的生成1柞。此時(shí)DLL已主成在你指定的H錄下料|j匚程保不保存就隨便你IC了.如果以后還恕再編輯修改的話+芳然得取個(gè)文件名保石好:人工成的DLL如果止確的話VBAIU要引出后就可止常調(diào)用了”現(xiàn)在回到EXCELVBA開發(fā)環(huán)境中來,先對剛生成的DLL進(jìn)存一下引用。關(guān)于引用,可以手工引用,也可以用代碼來做*于丄引出的步驟是:(v.VBE窗口中.菜單“工只“引T會(huì)彈川如下窗口:剛才生成的DLJ選擇杠勾確疋即叭代碼引用:Shell1lregsvr32/s&,.dHvbHide.Jjlls參數(shù)上防止川現(xiàn)確認(rèn)窗口+影響界I氏取消引用則便用/U參數(shù)。然后在VBA中行調(diào)用的代碼:SubDLLle)DimabcAsNewMytest*述義皐br為新類,即在DLL文件小定義的abc.test,調(diào)HJDLL|r
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 夾層大型管道支吊架安裝施工方案
- 供水水平定向鉆專項(xiàng)施工方案
- 2025年新鄉(xiāng)職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫帶答案解析
- 2025年鷹潭職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫帶答案解析
- 2025年哈爾濱信息工程學(xué)院馬克思主義基本原理概論期末考試模擬題附答案解析(奪冠)
- 2026年安徽電子信息職業(yè)技術(shù)學(xué)院單招職業(yè)技能考試題庫附答案解析
- 2025年民樂縣招教考試備考題庫及答案解析(必刷)
- 2025年涿鹿縣幼兒園教師招教考試備考題庫附答案解析(必刷)
- 2025年重慶農(nóng)業(yè)職業(yè)學(xué)院馬克思主義基本原理概論期末考試模擬題附答案解析(必刷)
- 珠寶公司文化創(chuàng)意開發(fā)方案
- 電池回收廠房建設(shè)方案(3篇)
- 保函管理辦法公司
- 幼兒游戲評價(jià)的可視化研究
- 果樹賠賞協(xié)議書
- 基底節(jié)出血的護(hù)理查房
- 2025年廣東省中考物理試題卷(含答案)
- 金華東陽市國有企業(yè)招聘A類工作人員筆試真題2024
- 2025年6月29日貴州省政府辦公廳遴選筆試真題及答案解析
- 2025年湖南省中考數(shù)學(xué)真題試卷及答案解析
- DB32/T 3518-2019西蘭花速凍技術(shù)規(guī)程
- 急救中心工作匯報(bào)
評論
0/150
提交評論