鍍金池/ 問答/C#  Office/ Excel UDF函數(shù)中怎么獲取Range對象。

Excel UDF函數(shù)中怎么獲取Range對象。

我使用.net 開發(fā)Excel udf函數(shù),有如下需求:在udf函數(shù)內(nèi)部,獲取當(dāng)前調(diào)用udf函數(shù)的單元格的range對象,我現(xiàn)在使用以下代碼獲取,雖然可以獲取到,但是有個(gè)bug:當(dāng)有多個(gè)excel打開時(shí),或引發(fā)COMException,異常來自HRESULT:0x800A03EC
圖片描述

Microsoft.Office.Interop.Excel.Application app =
(Microsoft.Office.Interop.Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
            Microsoft.Office.Interop.Excel.Range rr = app.ThisCell;

想問下各位,有沒有別的辦法,獲取Range對象。

回答
編輯回答
玄鳥

找了一天自己來解答了,udf類實(shí)現(xiàn)接口IDTExtensibility2,然后重寫以下方法

public void OnConnection(object Application, ext_ConnectMode ConnectMode, 
object objectAddInInst, ref Array custom)
? ?? ???{
? ?? ?? ?? ?MyExcelAppInstance = (MsExcel.Application)Application;
? ?? ?? ?? ?MyAddInInstance = AddInInst;
? ?? ???}

MyExcelAppInstance 就是當(dāng)前執(zhí)行的udf函數(shù)的excel實(shí)例

2017年2月12日 11:44