MSCBSC 移動(dòng)通信論壇
搜索
登錄注冊(cè)
網(wǎng)絡(luò)優(yōu)化工程師招聘專欄 4G/LTE通信工程師最新職位列表 通信實(shí)習(xí)生/應(yīng)屆生招聘職位

  • 閱讀:11161
  • 回復(fù):11
[經(jīng)驗(yàn)] 轉(zhuǎn)載-用DLL封裝VBA
yaoxuanbin
銀牌會(huì)員
鎵嬫満鍙風(fēng)爜宸查獙璇? style=


 發(fā)短消息    關(guān)注Ta 

積分 3716
帖子 54
威望 11285 個(gè)
禮品券 8 個(gè)
專家指數(shù) 66
注冊(cè) 2007-8-20
專業(yè)方向  網(wǎng)優(yōu)
來自 廣東
回答問題數(shù) 0
回答被采納數(shù) 0
回答采納率 0%
 
發(fā)表于 2008-03-26 23:34:13  只看樓主  QQ
本文用一簡(jiǎn)例來演示如何將一正常在VBA中運(yùn)行的代碼移植到VB制作的DLL中去,并介紹如何在VBA中進(jìn)行調(diào)用。這僅僅是最初級(jí)的介紹,希望能對(duì)此內(nèi)容想了解的版友們一些幫助,而已掌握該技術(shù)的FANS們完全可以跳過本文。 先來了解一下什么是DLLDLLDynamic Link Library的縮寫,意為動(dòng)態(tài)鏈接庫。在Windows中,許多應(yīng)用程序并不是一個(gè)完整的可執(zhí)行文件,它們被分割成一些相對(duì)獨(dú)立的動(dòng)態(tài)鏈接庫,即DLL文件,放置于系統(tǒng)中。當(dāng)我們執(zhí)行某一個(gè)程序時(shí),相應(yīng)的DLL文件就會(huì)被調(diào)用。一個(gè)應(yīng)用程序可有多個(gè)DLL文件,一個(gè)DLL文件也可能被幾個(gè)應(yīng)用程序所共用,這樣的DLL文件被稱為共享DLL文件。DLL文件一般被存放在C:\Windows\System目錄下。 因此,DLL文件可以看作是一個(gè)程序擴(kuò)展函數(shù)庫,成為應(yīng)用軟件程序的外掛接口。就象我們常在程序中用的WINDOWS API,就是如此,它是微軟提供給程序員的函數(shù)寶庫,用戶只需了解函數(shù)功能與調(diào)用規(guī)則就可以拿來使用,而不用知道也不需要知道具體源碼。也正因?yàn)榇耍F(xiàn)在許多VBA開發(fā)者在保護(hù)其代碼時(shí)也多采用此法來維護(hù)其合法權(quán)益。
現(xiàn)在開始。假如我們要編這么一段代碼:將工作表Sheet1的A1單元格的數(shù)值與B1單元格的數(shù)值相加填寫到C1單元格去(嘿嘿,這是極簡(jiǎn)單的了,只是用來說明問題),在VBA模塊我們可以編寫這樣的代碼: Sub test() On Error Resume Next Dim i, j As Integer With Worksheets("Sheet1") i = .Cells(1, 1).Value j = .Cells(1, 2).Value .Cells(1, 3) = i + j End With End Sub 執(zhí)行上面的宏,會(huì)發(fā)現(xiàn)C1單元格自動(dòng)會(huì)出現(xiàn)A1+B1的結(jié)果了。 下面我們?cè)赩B中生成包含以上宏功能的函數(shù)(子程序)的DLL文件。打開VB,“文件”-“新建工程”-“ActiveX DLL”,此時(shí)會(huì)彈出class1模塊代碼窗口,將如下代碼寫入: Sub test() On Error Resume Next Dim i, j As Integer Dim EB Set EB = GetObject(, "Excel.Application") With EB.ActiveSheet i = .Cells(1, 1).Value j = .Cells(1, 2).Value .Cells(1, 3) = i + j End With Set EB = Nothing End Sub 在生成DLL之前,注意確保VB里"工程"---"引用"里"Microsoft Excel 9.0 Object Library"前面的勾已打上,再就是正確設(shè)定好DLL描述與名稱。菜單“工程”----“工程屬性”---“工程描述”,里面可以寫上你的DLL功能名稱或簡(jiǎn)介或版本號(hào)!耙晥D”---“屬性”,設(shè)定名稱為你在其他開發(fā)環(huán)境中欲使用的引用名稱,如“Mytest”。好,現(xiàn)在點(diǎn)擊菜單“文件”---“生成…dll”,會(huì)彈出路徑與文件取名窗,按你的意思選擇與輸入好路徑和即將生成的DLL文件名,按確定就會(huì)完成DLL的生成工作。 此時(shí)DLL已生成在你指定的目錄下了,當(dāng)前工程保不保存就隨便你自己了,如果以后還想再編輯修改的話,當(dāng)然得取個(gè)文件名保存好:)。生成的DLL如果正確的話,VBA中只要引用后就可正常調(diào)用了。
現(xiàn)在回到EXCEL VBA開發(fā)環(huán)境中來,先對(duì)剛生成的DLL進(jìn)行一下引用。關(guān)于引用,可以手工引用,也可以用代碼來做。手工引用的步驟是:在VBE窗口中,菜單“工具”---“引用”,會(huì)彈出如下窗口:

剛才生成的DLL,選擇打勾確定即可。代碼引用:
Shell "regsvr32 /s " & "…………..dll", vbHide
,加s參數(shù)是防止出現(xiàn)確認(rèn)窗口,影響界面。取消引用則使用/u參數(shù)。
然后在VBA中寫調(diào)用的代碼: Sub DLLtest()
Dim abc As New Mytest ‘
定義abc為新類,即在DLL文件中定義的
abc.test ‘
調(diào)用DLL中提供的過程,來完成原來在VBA中的功能,起到隱藏代碼的效果
Set abc = Nothing
End Sub 提供的示例中,將VBA方法與DLL調(diào)用放在了一起,便于大家進(jìn)行比較。另外,DLL文件的制作遠(yuǎn)比我在這里介紹的復(fù)雜,還會(huì)涉及到類初始化、自定義屬性與事件等內(nèi)容,不過如果有時(shí)我們僅僅需要借助其來保護(hù)我們的VBA代碼的話,掌握這部分也就足夠了,呵呵。

查看積分策略說明
附件下載列表:
2008-3-26 23:34:13  下載次數(shù): 64
DLL調(diào)用示例.rar (17.97 KB)
掃碼關(guān)注5G通信官方公眾號(hào),免費(fèi)領(lǐng)取以下5G精品資料
  • 1、回復(fù)“YD5GAI”免費(fèi)領(lǐng)取《中國(guó)移動(dòng):5G網(wǎng)絡(luò)AI應(yīng)用典型場(chǎng)景技術(shù)解決方案白皮書
  • 2、回復(fù)“5G6G”免費(fèi)領(lǐng)取《5G_6G毫米波測(cè)試技術(shù)白皮書-2022_03-21
  • 3、回復(fù)“YD6G”免費(fèi)領(lǐng)取《中國(guó)移動(dòng):6G至簡(jiǎn)無線接入網(wǎng)白皮書
  • 4、回復(fù)“LTBPS”免費(fèi)領(lǐng)取《《中國(guó)聯(lián)通5G終端白皮書》
  • 5、回復(fù)“ZGDX”免費(fèi)領(lǐng)取《中國(guó)電信5G NTN技術(shù)白皮書
  • 6、回復(fù)“TXSB”免費(fèi)領(lǐng)取《通信設(shè)備安裝工程施工工藝圖解
  • 7、回復(fù)“YDSL”免費(fèi)領(lǐng)取《中國(guó)移動(dòng)算力并網(wǎng)白皮書
  • 8、回復(fù)“5GX3”免費(fèi)領(lǐng)取《 R16 23501-g60 5G的系統(tǒng)架構(gòu)1
  • 共獲得 2 次點(diǎn)評(píng) 我要點(diǎn)評(píng)

    • dlutli 威望 +10 個(gè)
      · 學(xué)習(xí),這是一個(gè)好辦法 詳細(xì).. 發(fā)表與:2008-6-9 20:39:04
    • cmccmario 專家指數(shù) +1
      · 我很贊同 詳細(xì).. 發(fā)表與:2008-5-11 18:41:44
     
    [充值威望,立即自動(dòng)到帳] [VIP貴賓權(quán)限+威望套餐] 另有大量?jī)?yōu)惠贈(zèng)送活動(dòng),請(qǐng)光臨充值中心
    充值擁有大量的威望和最高的下載權(quán)限,下載站內(nèi)資料無憂
    yaoxuanbin
    銀牌會(huì)員
    鎵嬫満鍙風(fēng)爜宸查獙璇? style=


     發(fā)短消息    關(guān)注Ta 

    積分 3716
    帖子 54
    威望 11285 個(gè)
    禮品券 8 個(gè)
    專家指數(shù) 66
    注冊(cè) 2007-8-20
    專業(yè)方向  網(wǎng)優(yōu)
    來自 廣東
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2008-03-31 11:10:45  只看樓主  QQ
    很有用的,看不懂的找我,QQ:214525732

    對(duì)本帖內(nèi)容的看法? 我要點(diǎn)評(píng)

     
    [立即成為VIP會(huì)員,百萬通信專業(yè)資料立即下載,支付寶、微信付款,簡(jiǎn)單、快速!]
    shelron
    金牌會(huì)員
    鎵嬫満鍙風(fēng)爜宸查獙璇? style=


     發(fā)短消息    關(guān)注Ta 

    積分 7814
    帖子 456
    威望 33420 個(gè)
    禮品券 8 個(gè)
    專家指數(shù) 49
    注冊(cè) 2006-4-29
    專業(yè)方向  通信
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2008-06-05 21:11:49 
    頂,支持樓主.
    頂,支持樓主.

    對(duì)本帖內(nèi)容的看法? 我要點(diǎn)評(píng)

     
    最新通信職位:廣東通信人才網(wǎng) | 北京通信人才網(wǎng) | 上海通信人才網(wǎng) | 南京通信人才網(wǎng) | 西安通信人才網(wǎng) | 重慶通信人才網(wǎng) | 中國(guó)通信人才網(wǎng)
    alcsl
    論壇元老
    鎵嬫満鍙風(fēng)爜宸查獙璇? style=


     發(fā)短消息    關(guān)注Ta 

    紀(jì)念勛章·三周年  
    積分 29369
    帖子 1244
    威望 49354 個(gè)
    禮品券 164 個(gè)
    專家指數(shù) 136
    注冊(cè) 2008-3-24
    專業(yè)方向  網(wǎng)絡(luò)優(yōu)化
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2008-06-10 18:32:43 
    需要學(xué)習(xí)一下了。!

    對(duì)本帖內(nèi)容的看法? 我要點(diǎn)評(píng)

     
    熱點(diǎn): 通信招聘職位 | 網(wǎng)絡(luò)優(yōu)化全集 | WCDMA精品 | TD-SCDMA學(xué)習(xí)資料 | EVDO | MGW媒體網(wǎng)關(guān)資料
    fse2006
    金牌會(huì)員



     發(fā)短消息    關(guān)注Ta 

    公益·慈善勛章  
    積分 7838
    帖子 706
    威望 71 個(gè)
    禮品券 0 個(gè)
    專家指數(shù) 5
    注冊(cè) 2006-11-6
    專業(yè)方向 
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2008-06-17 11:59:21 
    Excellent

    對(duì)本帖內(nèi)容的看法? 我要點(diǎn)評(píng)

     
    最新通信職位:廣東通信人才網(wǎng) | 北京通信人才網(wǎng) | 上海通信人才網(wǎng) | 南京通信人才網(wǎng) | 西安通信人才網(wǎng) | 重慶通信人才網(wǎng) | 中國(guó)通信人才網(wǎng)
    CAMYP
    入門會(huì)員



     發(fā)短消息    關(guān)注Ta 

    積分 5
    帖子 1
    威望 1 個(gè)
    禮品券 0 個(gè)
    專家指數(shù) 0
    注冊(cè) 2008-7-26
    專業(yè)方向  vba
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2008-07-26 12:32:36 

    共獲得 1 次點(diǎn)評(píng) 我要點(diǎn)評(píng)

     
    [2分鐘擁有VIP權(quán)限和充足威望,可下載站內(nèi)任何資料] [快速找到一份高薪的通信行業(yè)職位]
    zhangyulei2470
    鉆石會(huì)員
    鎵嬫満鍙風(fēng)爜宸查獙璇? style=


     發(fā)短消息    關(guān)注Ta 

    公益·慈善勛章  
    積分 13497
    帖子 509
    威望 18391 個(gè)
    禮品券 15 個(gè)
    專家指數(shù) 289
    注冊(cè) 2007-12-29
    專業(yè)方向  通信
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2008-08-02 11:44:32 
    下載看看那,多謝樓主了!

    對(duì)本帖內(nèi)容的看法? 我要點(diǎn)評(píng)





    學(xué)無止境,不止學(xué)習(xí)方能不斷進(jìn)步!
     
    熱點(diǎn): 通信招聘職位 | 網(wǎng)絡(luò)優(yōu)化全集 | WCDMA精品 | TD-SCDMA學(xué)習(xí)資料 | EVDO | MGW媒體網(wǎng)關(guān)資料
    chinaren123
    銀牌會(huì)員



     發(fā)短消息    關(guān)注Ta 

    公益·慈善勛章  
    積分 4627
    帖子 439
    威望 22710 個(gè)
    禮品券 5 個(gè)
    專家指數(shù) 7
    注冊(cè) 2006-6-4
    專業(yè)方向  愛立信
    來自 WH
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2008-10-08 21:52:13 
    相當(dāng)?shù)母兄x!!!!!!!!!!!!

    對(duì)本帖內(nèi)容的看法? 我要點(diǎn)評(píng)

     
    熱點(diǎn): 通信招聘職位 | 網(wǎng)絡(luò)優(yōu)化全集 | WCDMA精品 | TD-SCDMA學(xué)習(xí)資料 | EVDO | MGW媒體網(wǎng)關(guān)資料
    xzf953
    金牌會(huì)員
    鎵嬫満鍙風(fēng)爜宸查獙璇? style=


     發(fā)短消息    關(guān)注Ta 

    紀(jì)念勛章·十周年  
    積分 9431
    帖子 868
    威望 291145 個(gè)
    禮品券 5 個(gè)
    專家指數(shù) 79
    注冊(cè) 2007-2-27
    專業(yè)方向  網(wǎng)絡(luò)優(yōu)化+VBA+數(shù)據(jù)庫
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2008-10-09 19:54:37 
    頂下

    對(duì)本帖內(nèi)容的看法? 我要點(diǎn)評(píng)

     
    [2分鐘擁有VIP權(quán)限和充足威望,可下載站內(nèi)任何資料] [快速找到一份高薪的通信行業(yè)職位]
    unicom_fj
    VIP會(huì)員
    鎵嬫満鍙風(fēng)爜宸查獙璇? style=


     發(fā)短消息    關(guān)注Ta 

    專家·高級(jí)勛章  
    積分 158975
    帖子 19406
    威望 3004853 個(gè)
    禮品券 54 個(gè)
    專家指數(shù) 433
    注冊(cè) 2006-10-27
    專業(yè)方向  IT
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2009-01-18 13:27:01 
    已經(jīng)下了,謝謝!

    對(duì)本帖內(nèi)容的看法? 我要點(diǎn)評(píng)

     
    熱點(diǎn): 通信招聘職位 | 網(wǎng)絡(luò)優(yōu)化全集 | WCDMA精品 | TD-SCDMA學(xué)習(xí)資料 | EVDO | MGW媒體網(wǎng)關(guān)資料
    GEEYI
    金牌會(huì)員



     發(fā)短消息    關(guān)注Ta 

    積分 5496
    帖子 243
    威望 13657 個(gè)
    禮品券 64 個(gè)
    專家指數(shù) 12
    注冊(cè) 2008-5-5
    專業(yè)方向  信息
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2009-07-24 15:57:00 
    看不懂 哦

    對(duì)本帖內(nèi)容的看法? 我要點(diǎn)評(píng)

     
    熱點(diǎn): 通信招聘職位 | 網(wǎng)絡(luò)優(yōu)化全集 | WCDMA精品 | TD-SCDMA學(xué)習(xí)資料 | EVDO | MGW媒體網(wǎng)關(guān)資料
    ipseno
    版主
    鎵嬫満鍙風(fēng)爜宸查獙璇? style=


     發(fā)短消息    關(guān)注Ta 

    紀(jì)念勛章·八周年   紀(jì)念勛章·十周年  
    積分 6989
    帖子 873
    威望 13920 個(gè)
    禮品券 610 個(gè)
    專家指數(shù) -75
    注冊(cè) 2008-3-24
    專業(yè)方向  網(wǎng)絡(luò)優(yōu)化
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2013-12-29 16:44:17  QQ


    QUOTE:
    原帖由 CAMYP 于 2008-7-26 12:32:36 發(fā)表

    禁止純表情灌水

    對(duì)本帖內(nèi)容的看法? 我要點(diǎn)評(píng)

     
    [2分鐘擁有VIP權(quán)限和充足威望,可下載站內(nèi)任何資料] [快速找到一份高薪的通信行業(yè)職位]

    快速回復(fù)主題    
    標(biāo)題 [經(jīng)驗(yàn)] 轉(zhuǎn)載-用DLL封裝VBA" tabindex="1">
    內(nèi)容
     上傳資料請(qǐng)點(diǎn)左側(cè)【添加附件】

    (勾選中文件為要?jiǎng)h除文件)


    當(dāng)前時(shí)區(qū) GMT+8, 現(xiàn)在時(shí)間是 2025-05-09 03:34:27
    渝ICP備11001752號(hào)  Copyright @ 2006-2016 mscbsc.com  本站統(tǒng)一服務(wù)郵箱:mscbsc@163.com

    Processed in 0.810036 second(s), 41 queries , Gzip enabled
    TOP
    清除 Cookies - 聯(lián)系我們 - 移動(dòng)通信網(wǎng) - 移動(dòng)通信論壇 - 通信招聘網(wǎng) - Archiver