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

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


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

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

剛才生成的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ù)雜,還會涉及到類初始化、自定義屬性與事件等內(nèi)容,不過如果有時我們僅僅需要借助其來保護(hù)我們的VBA代碼的話,掌握這部分也就足夠了,呵呵。

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

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


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

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

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

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


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

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

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

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


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

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

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

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



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

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

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

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



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

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

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

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


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

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

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





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



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

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

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

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


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

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

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

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


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

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

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

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



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

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

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

     
    熱點(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
    威望 13410 個
    禮品券 610 個
    專家指數(shù) -75
    注冊 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ā)表

    禁止純表情灌水

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

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

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

    (勾選中文件為要刪除文件)


    當(dāng)前時區(qū) GMT+8, 現(xiàn)在時間是 2025-01-11 04:39:58
    渝ICP備11001752號  Copyright @ 2006-2016 mscbsc.com  本站統(tǒng)一服務(wù)郵箱:mscbsc@163.com

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