將VBA操作封裝為DLL元件並在EXCEL中呼叫
註冊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檔案放在固定資料夾內,如果你有多個XLS文件需要使用到同一個DLL檔案,但這些XLS文件又不可能都與DLL檔案放在同一個資料夾,則需要將DLL檔案放置到一個固定資料夾,這樣,只需要將上面的程式碼 ThisWorkBook.path & "\VBADLL.dll" 換成一個固定位置即可。 注意:有時間可能出現某些錯誤,如提示“變數型別未定義”等,可能是引用後改變了檔案的位置或改變了檔案的名稱,即使再重新再改回來也可能會出現這些問題,所以,在正確註冊及引用以後,最好不要再去修改這個DLL檔案。如果出現問題,重新註冊一次,保證註冊的DLL檔案的位置正確即可。 二、新建一個模組,輸入呼叫DLL檔案程式的過程: Sub DLLtest() Dim ABC As New VBAtest '定義ABC為新類,即為DLL檔案中的類模組VBAtest ABC.Test '呼叫DLL中提供的過程,來完成原來在VBA中的功能,起到隱藏程式碼的效果 Set ABC = Nothing '釋放類資源 End Sub 三、在工作表中執行DLLtest巨集即可實現呼叫:
綜上所述,感覺封裝DLL的主要步驟是:
①在VB中引用EXCEL;
②編輯程式碼(要在物件前面加上定義的EXCEL變數);
③在VBE中引用該DLL檔案;
④在VBE的程式碼中呼叫DLL中的過程。
親測可用,轉自 http://ych4943.blog.163.com/blog/static/376967502012842360885/
相關推薦
將VBA操作封裝為DLL元件並在EXCEL中呼叫
使用程式: 1、Microsoft Office Excel 2003 2、Microsoft Visual Basic 6.0 案例:在工作表的C1單元格得出A1單元格+B1單元格的值。 設計的VBA程式碼: Sub Test() On Error
C#封裝的dll檔案在Labview中呼叫
操作步驟 1.開啟vi的後面板,右鍵單擊選擇“Connectivity”------“.NET”--------"ConstructorNode"此時會彈出窗。選擇所需dll檔案 &nb
VS如何將核心函式封裝成dll、lib,並供給第三方呼叫?
本文首發於微信公眾號【視覺IMAX】,作者原創。 文章目錄 前言 一 先封裝核心函式,實現功能 二 將核心函式生成dll、lib(此處以debug模式下為例,release模式下相類似) 三 呼叫dll、lib檔案 四
對話方塊使用ocx控制元件封裝為dll
mfc對話方塊中使用了ocx,再封裝為dll,在匯出函式中加入AfxEnableControlContainer() void ShowMyDllDlg(HWND hMainWnd) //匯出函式 { AFX_MANAGE_STATE(AfxGetStaticMod
利用反射技術將查詢結果封裝為對象
long trace leg war sel 反射 test get col public class ORMTest extends HttpServlet { private static final long se
duilib中將xml封裝為控制元件簡單示例(簡單自定義控制元件,封裝幾個基本控制元件合為1個自定義控制元件)
使用duilib的時候,難免會有這樣的需求: 某一塊Container(Layout)以及裡面的佈局需要重複用,不想每次都複製貼上這麼多,要不然xml太大了; 通過繼承來自定義一個控制元件,比如CButtonUIEx之類的,想讓他像button一樣在xml中被識別; xml裡面的東西
將伺服器響應封裝為一個泛型類
/** * * 返回前端資料封裝 */ //當序列化Json物件時,如果是null的物件,key也會消失 @JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL) public class ServerResponse<T&
利用棧將中綴表示式轉換為字尾表示式並進行計算
[問題描述] 中綴表示式是最普通的一種書寫表示式的方式,而後綴表示式不需要用括號來表示,計算機可簡化對字尾表示式的計算過程,而該過程又是棧的一個典型應用。 [實驗目的] (1) 深入理解棧的特性。 (2) 掌握棧結構的構造方法。 [實驗內容及要求]
將Redis操作封裝成Model
Redis經常作為一種記憶體化的資料庫使用,將Redis封裝成Model,同一業務型別資料的操作都放在一個Model裡,這樣可以提高程式碼的可維護性。 為此,我寫了一個開源的庫redmodel,將Redis常用的操作封裝成了類似資料庫查詢語句的方法。 例如一
將時間戳轉換為時間,並輸出“剛剛”、“昨天”、“XX小時前”等
我們在開發iOS程式中需要有介面,有時候藉口提供的時間是NSNumber型別的並且是時間戳。比如說:1447375370 其實這個意思就是1970年0點到當前時間的秒數。 看到這裡,大概我們心裡就有數
C++類 使用template 如何封裝為DLL
1.建立一個win32專案,選擇dll建立,如果是已經編寫好的類,則可以勾選”空專案”。 2.在“標頭檔案”目錄下建立新的標頭檔案,這裡以Node類為例:Node.h,將編寫好的Node的宣告寫入Node.h中。 3.注意,一般類的封裝此時就應當寫Node.cpp從而實現該類
將ajax請求封裝為一個物件(原生js)
var AjaxUtil = { // 預設基礎選項 options : { method : "get", //預設提交的方法 url : "", //請求的路徑 required params : {}, //請求的引數 type : 'text',
C#中使用OpenGL:(三)將.lib檔案編譯為.dll檔案
C#不能呼叫C/C++lib檔案的函式,但能呼叫dll檔案的函式。可是現在的情況是,我只有一個lib檔案,函式的實現都在裡邊了。能不能把lib變為dll呢?答案是肯定的。 要把lib編譯為dll大概有三種方法吧: 第一種,就是把lib的函式封裝一下,然後用編
python將logging模組封裝成單獨模組並實現動態切換Level
查找了很多資料,但網上給出的教程都是大同小異的,而我想將程式碼進一步精簡,解耦,想實現如下兩個目標 1. 將logging模組的初始化,配置,設定等程式碼封裝到一個模組中; 2. 能根據配置切換logging.level, 網上給出的教程都是寫死的,如果我在線上之前使用了l
C#.NET如何將cs檔案編譯成dll檔案 exe檔案 如何呼叫dll檔案
比如我要把TestDLL.cs檔案編譯成dll檔案,則在命令提示符下,輸入下面的命令,生成的檔案為TestDLL.dll csc /target:library TestDLL.cs 注意前提是你安裝了.NET Framework並把csc.exe加入了環境變數(參考我的另一
如何將頁面上的數據導入excel中
進行 mil his spl 查找 inf css ie瀏覽器 art 網上關於頁面數據導入excel的文章很多,但是大部分都是關於 ActiveXObject 對象,可是ActiveXObject 對象是只支持IE的,可我連IE11也測試了,還是無法識別,又查到消息,好像
封裝C#程式碼為DLL並在C#程式碼中引用
1.封裝C#程式碼為DLl 在VS2012中建立專案選擇類庫,命名testMyDll,新建類msg,注意修飾符必須為public using System; using System.Collections.Generic; using System.Linq; using System.T
Python操作Mongodb的用法,並將其簡單封裝起來
Pymongo pip install pymongo pymongo是python的mongodb client,這裡將其使用方法封裝成class,並提供單元測試用以展示其基本用法。直接看程式碼。
C# 將NamedPipeClientStream封裝為事件驅動的元件
本封裝的元件,可以方便連線本機或遠端 主機的命名管道。 連線遠端主機時,需要提供帳號和密碼。 同時解決了委託事件中修改介面元素時引起的安全錯誤。 程式碼為【除錯】版,有不少除錯資訊傳遞到呼叫者。 using System; using System.ComponentModel;
swift 錄制多個音頻 並將音頻轉換為mp3 並合成多個mp3文件為一個文件
art sta ttr 錄制 cti record buffer hub 上傳 我的需求是可以錄制多個文件,最後生成的文件格式為mp3形式,查了下各種資料,因為swift無法直接將音頻錄制為mp3格式,所以最後我采取的解決方案為先將每個單獨的文件轉為mp3,最後逐一合並形成