2010-11-09 25 views
2

我正在使用Office Excel VSTO。我的工作簿中有一個單元格的單元格引用信息。說,Sheet1!$ A $ 5。我想獲得這個單元格及其類型的信息。通過任何方式在VSTO中可能嗎?
我現在打破這個單元格引用去工作表和單元格獲取值。我想更簡單的方法是可能的。C中CellReference的單元格中的值#

回答

1

我不知道這是否是你所追求的,但下面爲您提供了直接訪問單元:

 var range = (Range)Globals.ThisAddIn.Application.Range["Sheet1!$a$5"]; 
    var cellContent = range.Value2; 
0

好吧,我想我有你的問題想通了。
您想使用VSTO替換您用於更新當前工作簿中的值的工作簿鏈接。
對我的線索....
1.想在這個單元中的信息和其類型
2.使用VSTO做
3.我現在打破這個單元格引用
順便說一句,如果我的上面的假設是正確的,那麼請編輯你的問題,以使未來的讀者更有意義。

代碼示例

//get workbook link cell ref 
var range = (Range)Globals.ThisAddIn.Application.Range["Sheet1!$a$5"]; 
//determine type 
// if straight linking a value this step is unnecessary unless using the type info to format the cell 
// or because you are doing a transformation or aggregation on the data prior to putting it somewhere. 
// if needed... do some try/catchs on casting it to oledate, bool, double, string in that order. 
// get value 
var value = range.Value2; 
// update "active" sheet 
var sht = (Excel.WorkSheet)Globals.ThisAddIn.Application.ActiveSheet; 
sht.Range["A1"].Value2 = value; 
// don't forget to call FinalReleaseCOMObject and GC.WaitForPendingFinalizers/GC.Collect block!! 

還要注意的是,是的,你將是「打破了單元格引用」如果改爲使用代碼。請注意,您可以保留工作簿鏈接,但是使用代碼方法沒有意義。我的建議是在通用代碼中使用,因爲它比較靈活,但是當你想要速度(配置)並且數據不需要比基本操作(SUM,IF,基本數學運算符)更多的時候利用鏈接。

相關問題