1、MicrosoftOffice <em>Excel</em> 2016 2、MicrosoftVisual Basic 6.0 需求:在工作表的C1单元格得出A1单元格+B1单元格的值。设计的VBA代码:SubTest()OnError Resume NextRange("C1") = Cells(1, 1) + Cells(1, 2)End
2021-05-18 10:30:16
01
寫在前面
使用程式:
1、MicrosoftOffice Excel 2016
2、MicrosoftVisual Basic 6.0
需求:在工作表的C1單元格得出A1單元格+B1單元格的值。
設計的VBA程式碼:
SubTest()OnError Resume NextRange("C1") = Cells(1, 1) + Cells(1, 2)EndSub
02
使用VB6.0製作DLL檔案
一、 啟動VB6.0,新建一個ActiveX DLL工程:
二、 引用:在VB中對Excel的引用
不同版本的EXCEL在「引用」窗口裡顯示的版本號也不同:
EXCEL2000(MicrosoftOffice 9.0)
EXCEL2002(MicrosoftOffice 10.0),即ExcelXP
EXCEL2003(MicrosoftOffice 11.0)
EXCEL2007(MicrosoftOffice 12.0)
EXCEL2010(MicrosoftOffice 14.0)
EXCEL2013(MicrosoftOffice 15.0)
EXCEL2016(MicrosoftOffice 16.0)
三、 修改ActiveX DLL的工程名稱和類模組名稱
四、編寫程式碼:
在程式碼視窗輸入程式碼,過程名稱為Test:
SubTest()OnError Resume NextDimVBt, YB '定義變數VBtSetVBt = GetObject(,"Excel.Application") '使VBt表示為EXCEL物件SetYB = VBt.ActiveSheet '使YB表示為EXCEL的當前工作表'注意要在物件前加上YB變數以表示是EXCEL當前工作表的物件YB.Range("C1") = YB.Cells(1,1).Value + YB.Cells(1, 2).ValueEndSub
五、設定工程屬性 (為使開發的程式更規範,可以對工程屬性加以描述【非必要設定,可以省略】):
六、儲存工程、測試、生成DLL檔案:
1、儲存工程:儲存本工程以作為將來修改程式碼和升級程式的需要;
2、測試工程:執行快捷工具欄上的「啟動」按鈕,檢查是否存在錯誤;
3、生成DLL檔案:製作DLL檔案。
03
呼叫DLL檔案
一、在VBE中呼叫DLL檔案
呼叫DLL檔案,要分兩步走:先註冊DLL,再引用DLL。
1、 註冊DLL(使之放在可引用的列表上):註冊DLL也可以使用程式碼來做,但那樣比較複雜,也存在很多問題,建議一般使用手工來註冊。
(這裡應該先設計好DLL檔案放在硬碟的位置,因為後面引用DLL檔案的程式碼也應該是指向這個位置的。)
先開啟EXCEL,再開啟「Visual Basic 編輯器」
2、引用DLL(這樣每次開啟檔案時,就不必再去那個引用列表裡打個勾了)
①DLL檔案放在與EXCEL檔案同一個資料夾內
在ThisWorkbook中新增如下程式碼:
PrivateSub Workbook_Open() '開啟檔案時載入要引用的DLL檔案shell"Regsvr32 /s " & Chr(34) & ThisWorkBook.path &"VBADLL.dll"& Chr(34)EndSubPrivateSub Workbook_BeforeClose(Cancel As Boolean)'關閉檔案之前解除安裝引用的DLL檔案shell"Regsvr32 /s /u " & Chr(34) & ThisWorkBook.path& "VBADLL.dll"& Chr(34)EndSub
'/s參數是防止出現確認視窗;/u參數為取消引用。
②DLL檔案放在固定資料夾內,如果你有多個XLS文件需要使用到同一個DLL檔案,但這些XLS文件又不可能都與DLL檔案放在同一個資料夾,則需要將DLL檔案放置到一個固定資料夾,這樣,只需要將上面的程式碼 ThisWorkBook.path& "VBADLL.dll" 換成一個固定位置即可。
注意:有時間可能出現某些錯誤,如提示「變數類型未定義」等,可能是引用後改變了檔案的位置或改變了檔案的名稱,即使再重新再改回來也可能會出現這些問題,所以,在正確註冊及引用以後,最好不要再去修改這個DLL檔案。如果出現問題,重新註冊一次,保證註冊的DLL檔案的位置正確即可。
二、新建一個模組,輸入呼叫DLL檔案程式的過程:
SubDLLtest()DimABC As New VBAtest '定義ABC為新類,即為DLL檔案中的類模組VBAtestABC.Test'呼叫DLL中提供的過程,來完成原來在VBA中的功能,起到隱藏程式碼的效果SetABC = Nothing '釋放類資源EndSub
三、在工作表中運行DLLtest宏即可實現呼叫:
04
寫在最後
封裝DLL的主要步驟是:①在VB中引用EXCEL;②編輯程式碼(要在物件前面加上定義的EXCEL變數);③在VBE中引用該DLL檔案;
④在VBE的程式碼中呼叫DLL中的過程。
分享、交流
不迷路
THE
END
相關文章
1、MicrosoftOffice <em>Excel</em> 2016 2、MicrosoftVisual Basic 6.0 需求:在工作表的C1单元格得出A1单元格+B1单元格的值。设计的VBA代码:SubTest()OnError Resume NextRange("C1") = Cells(1, 1) + Cells(1, 2)End
2021-05-18 10:30:16
When the disappointment is enough, there is a reason to leave.想谈一场笑容比眼泪多的恋爱。Want to talk about a smile more than tears in love.我说的每一句话,你都已经听不见了。You can't hear every <e
2021-05-18 10:30:03
为何这位Waymo前CEO可以如此骄傲?那是因为,如果 Google 占据了自动驾驶系统——就像<em>Android</em>之于智能手机,就等于掌控了整个汽车产业的命脉。Odin 先前撰文分析自动驾驶时曾表示,自动驾驶的灵魂,其实就是“智慧城
2021-05-18 10:01:20
随后,该博主再次给出更确切的关于华为Mate PadPro2,该平板分为两个版本,分别赋予“瓦格纳”、“马克思2”代号。前者采用麒麟芯片,首发搭载鸿蒙2.0操作系统、后者采用<em>高通</em>4G芯片(去年底<em>高通</em>获得相关许可
2021-05-18 09:30:48
用户使用手机/平板的<em>浏览器</em>,扫描T0背面的二维码,可以下载专用APP---小翼视讯,用户可通过小翼视讯,方便快捷对T0进行操控。 除了法翼T0的机身主体外,包装还附赠了详细的操作指南与保修卡、纪念卡、5V1A电源插
2021-05-18 09:30:35
配置<em>Docker</em>与vfs存储驱动程序 1.停止<em>Docker</em>。$ sudo systemctl stop <em>docker</em> 2.编辑/etc/<em>docker</em>/daemon.json。如果尚不存在,请创建它。假设文件为空,请添加以下内容。{ "storage-d
2021-05-18 09:30:18