將VBA操作封裝為DLL元件並在EXCEL中呼叫

2021-06-29 03:17:09 字數 2940 閱讀 1035

使用程式:

1、microsoft office excel 2003

2、microsoft visual basic 6.0

案例:在工作表的c1單元格得出a1單元格+b1單元格的值。

設計的vba**:

sub test()

on error resume next

range("c1") = cells(1, 1) + cells(1, 2)

end sub

第一部分、使用vb6.0製作dll檔案

一、 啟動vb6.0,新建乙個activex dll工程:

二、 引用:在vb中對excel的引用

不同版本的excel在「引用」視窗裡顯示的版本號也不同:

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的工程名稱和類模組名稱

四、編寫**:

在**視窗輸入**,過程名稱為test:

sub test()

on error resume next

dim vbt, yb    '定義變數vbt

set yb = vbt.activesheet    '使yb表示為excel的當前工作表

'注意要在物件前加上yb變數以表示是excel當前工作表的物件

yb. range("c1")  = yb.cells(1, 1).value + yb.cells(1, 2).value

end sub

五、設定工程屬性 (為使開發的程式更規範,可以對工程屬性加以描述【非必要設定,可以省略】):

六、儲存工程、測試、生成dll檔案:

1、儲存工程:儲存本工程以作為將來修改**和公升級程式的需要;

2、測試工程:執行快捷工具欄上的「啟動」按鈕,檢查是否存在錯誤;

3、生成dll檔案:製作dll檔案。

第二部分、呼叫dll檔案

一、在vbe中呼叫dll檔案

呼叫dll檔案,要分兩步走:先註冊dll,再引用dll。

1、註冊dll(使之放在可引用的列表上):

註冊dll也可以使用**來做,但那樣比較複雜,也存在很多問題,建議一般使用手工來註冊。

(這裡應該先設計好dll檔案放在硬碟的位置,因為後面引用dll檔案的**也應該是指向這個位置的。)  

先開啟excel,再開啟「visual basic 編輯器」

2、引用dll(這樣每次開啟開啟檔案時,就不必再去那個引用列表裡打個勾了)

①dll檔案放在與excel檔案同乙個資料夾內

在thisworkbook中新增如下**:

private sub workbook_open() '開啟檔案時載入要引用的dll檔案

shell "regsvr32 /s " & chr(34) & thisworkbook.path & "\vbadll.dll"& chr(34)

end sub

private sub workbook_beforeclose(cancel as boolean)

'關閉檔案之前解除安裝引用的dll檔案

shell "regsvr32 /s /u " & chr(34) & thisworkbook.path & "\vbadll.dll"& chr(34)

end sub

'/s引數是防止出現確認視窗;/u引數為取消引用。

注意:有時間可能出現某些錯誤,如提示「變數型別未定義」等,可能是引用後改變了檔案的位置或改變了檔案的名稱,即使再重新再改回來也可能會出現這些問題,所以,在正確註冊及引用以後,最好不要再去修改這個dll檔案。如果出現問題,重新註冊一次,保證註冊的dll檔案的位置正確即可。

二、新建乙個模組,輸入呼叫dll檔案程式的過程:

sub dlltest()

dim abc as new vbatest      '定義abc為新類,即為dll檔案中的類模組vbatest

abc.test    '呼叫dll中提供的過程,來完成原來在vba中的功能,起到隱藏**的效果

set abc = nothing   '釋放類資源

三、在工作表中執行dlltest巨集即可實現呼叫:

綜上所述,感覺封裝dll的主要步驟是:

①在vb中引用excel;

②編輯**(要在物件前面加上定義的excel變數);

③在vbe中引用該dll檔案;

④在vbe的**中呼叫dll中的過程。

親測可用,** 

將Nginx封裝為Windows服務並自啟動

建立nginx service.exe.config 為支援net 4.0 runtime,預設只支援net 2.0 runtime 檔案結構如下 nginx service.xml 內容如下 nginx nginx service high performance nginx service d ...

將webkit核心封裝為duilib的瀏覽器控制項

先簡單介紹一下這個webkit核心 webkit 是乙個開源的 瀏覽器引擎,與之相對應的引擎有 gecko mozilla firefox 等使用 和 trident 也稱mshtml,ie 使用 同時webkit 也是蘋果mac os x 系統引擎框架版本的名稱,主要用於 safari dashb...

Unity 將Debug封裝成dll

在開發過程中避免不了各種debug除錯,在打包的時候為了減少效能消耗,需要將所有的debug注釋或刪除掉。如果再次調整則需要取消注釋,來回折騰很是麻煩。之前嘗試將debug簡單的封裝到乙個類,利用乙個bool控制是否啟用debug功能,正常開發是只需將bool值設為true,打包時設為false即可...