呼叫 Excel 函數來求取 [最小公倍數]
如何不使用數學運算 而直接使用 Excel 的 LCM 函數來取 [最小公倍數]
Dim xls As Object ' 建立物件
Set xls = CreateObject("Excel.Application") ' 建立 Excel Application 物建實體 ( 個體化 )
' 用 Excel 工作簿(集合物件) 開啟 atpvbaen.xla 增益集
' xls.LibraryPath 為 Excel 函式庫資料夾路徑 - 註 1
' 呼叫 RunAutoMacros 方法來執行巨集 (Macro) - 註 2
' 1 為 xlAutoOpen - 註 3
xls.Workbooks.Open(xls.LibraryPath & "\Analysis\atpvbaen.xla").RunAutoMacros 1
' 使用 atpvbaen.xla 增益集中 LCM 函數來求取 6 , 12 , 144 的最小公倍數
MsgBox xls.Run("atpvbaen.xla!LCM", 6, 12, 144) ' 方法1
' GetMacroRegId 取得巨集登錄(註冊)ID
' 透過 GetMacroRegId 來取得 LCM 函數來計算 6 , 12 , 144 的最小公倍數
MsgBox xls.Run("GetMacroRegId(""lcm"")", 6, 12, 144) ' 方法2
xls.Quit ' 離開 ; 關閉 Excel
Set xls = Nothing ' 釋放 Excel 應用程式物件
By the way , 同理 .. 若語言本身無某些特定數學函數 , 則可運用此一方法來呼叫 Excel 函數使用
註 1 :
Excel 常用預設路徑
' 傳回取代啟動資料夾的名稱
Application.AltStartupPath
' 傳回目前工作簿的路徑 (檔案未存檔時傳回空字串)
ActiveWorkbook.Path
' 現用目前工作簿的路徑及檔案名稱(檔案未存檔時只傳回暫存檔名)
ActiveWorkbook.FullName
' 傳回儲存範本所在的網路路徑,如果指定的網路路徑不存在,本屬性將傳回一空字串
Application.NetworkTemplatesPath
' 傳回儲存範本所在的區域路徑
Application.TemplatesPath
' 傳回Excel程式完整路徑
Application.Path
' 傳回或者設定 Microsoft Excel 開啟檔案時使用的預設路徑
Application.DefaultFilePath
' 傳回啟動資料夾的完整路徑
Application.StartupPath
' 傳回程式庫資料夾的路徑
Application.LibraryPath
' 傳回使用者電腦上 COM 增益集安裝位置的路徑 (2000以上)
Application.UserLibraryPath
' 傳回路徑分隔符號
Application.PathSeparator
註 2 :
Excel 內有兩個自動巨集 , 一個是 Auto_Open , 一個是 Auto_Close
作用 :
當 Excel 開啟內含巨集的工作簿時 , 會自動執行 Auto_Open , 當關閉時會執行 Auto_Close
但若透過程式呼叫建立 Excel 應用程式物件時 ( OLE Automation ; ActiveX )
則並不會執行 Auto_Open , Auto_Close , 因此需透過 RunAutoMacros 方法來設定執行(動作)
註 3 :
RunAutoMacros 方法
Workbooks.RunAutoMacros(引數)
常數說明
xlAutoOpen : 1 - 自動開啟巨集
xlAutoClose : 2 - 自動關閉巨集
xlAutoActivate : 3 - 巨集作用
xlAutoDeactivate : 4 - 使巨集無效