如何在 VBA 中執行 Excel Add-in 中的程式碼
阿新 • • 發佈:2018-12-14
Excel Add-in 指使用 VBA 編寫並且儲存在 xlam 檔案中的載入項(也經常被稱作載入巨集)。將 VBA 程式碼分散在各個 Excel 檔案中不利於程式碼的管理,微軟新的載入項編寫技術 Web Add-in 也是希望程式碼的部署由分散到集中。用 VBA 編寫的程式碼,如果存放在 Excel Add-in 中,也能實現一定程度的集中。
那麼,放在 xlam 的程式碼,其他的工作薄在 VBA 中如何呼叫其中的程式碼呢?本文做一個簡單的說明。
新建一個工作簿,另存為 xlam
(Excel 載入巨集) 格式。Excel 對於載入巨集,會預設一個儲存位置,您可以手工改變儲存的位置。儲存在預設位置的載入巨集,在 Excel Ribbon 選單項的 開發者工具
開啟 StoneUtils.xlam,在開啟狀態下,沒有工作表,所以介面看起來是空的。通過快捷鍵 Alt + F11 進入 VBE 環境,插入一個模組,將模組命名為 TestModule
。在 TestModule
中編寫如下程式碼:
Public Function About() As String
About = "Developed by Stone " & VBA.vbCrLf & " Version 1.0, 2018"
End Function
顯示一條資訊。
關閉載入項檔案,另外開啟一個 Excel 工作簿。通過 開發者工具
StoneUtils
載入巨集:
進入 VBE 環境,我們可以看到,在左邊的工程資料夾中,開啟的工作表和 StoneUtils
的工程都叫 VBAProject
,這可不好區分,我們需要將 StoneUtils
的 VBA Project 改一個名字。
接下來在 VBE 中新增對 StoneUtils
的引用:
然後在工作簿1中編寫測試子例程如下:
Public Sub test_about_info()
Dim info As String
info = StoneUtils.TestModule.About()
Debug.Print info
End Sub
執行,在立即視窗中打印出如下資訊:
第二種方法,使用 Application.run()
:
Public Sub test_about_info_method2()
Dim info As String
Dim addinPath As String
addinPath = Application.UserLibraryPath
info = Application.Run("'" & addinPath & "StoneUtils.xlam'!About")
Debug.Print info
End Sub
注意,工作簿檔案需要用單引號包圍(定界符)。第二種方法不侷限於 xlam
檔案,普通的 xlam
檔案也可以。