簡體   English   中英

如何獲取背景中某些單元格的值?

[英]How can I get values of certain cells in background?

我試圖創建一個ExcelReference,然后調用GetValue(),但這會導致XlCallException(異常中未提供任何詳細信息)。

var val = new ExcelReference(1, 1).GetValue();

我究竟做錯了什么?

您可能是從UDF內部調用的。 普通的UDF無法讀取工作表的其他部分-想法是您將所需的信息作為參數傳遞給函數。

您可以將Excel-DNA函數標記為“宏表函數”,這將使其起作用。 (在ExcelFunction屬性中設置IsMacroType = true。)但這對您的計算序列有其他副作用,例如,您可能會從該單元格中獲取值,就像開始計算之前一樣。

因此,最好堅持使用Excel的功能樣式,並將額外的依賴項傳遞到UDF中。


另一種可能性是您正在從后台工作程序線程中調用此方法。 只能從Excel主線程調用Excel C API(您正在通過ExcelReference類型使用)(線程安全UDF除外)。 因此,您需要獲取后台代碼以在主線程上運行。

Excel基本上是單線程的,因此在使用COM對象模型時也是如此-所有調用在實際運行之前都由COM編組到Excel主線程。

在Excel-DNA加載項中,您可以使用ExcelAsyncUtil.QueueAsMacro(...)幫助程序將代碼調度為作為宏在主線程上運行。 您傳入的委托將盡快運行,並且可以安全地進行您要求的C API調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM