我正在使用Office Excel VSTO。我在工作簿中有一个单元格的单元格引用信息。比方说, Sheet1!$ A $ 5 。我想获取此单元格及其类型中的信息。这在VSTO中是否可能以任何方式实现?
我现在正在打破这个单元格引用转到工作表和单元格获取值。我想更简单的方法是可能的。
答案 0 :(得分:1)
我不确定这是否是您所追求的,但以下内容可让您直接访问该单元格:
var range = (Range)Globals.ThisAddIn.Application.Range["Sheet1!$a$5"];
var cellContent = range.Value2;
答案 1 :(得分:0)
好的,我想我的问题已经解决了。
您希望使用VSTO替换用于更新当前工作簿中的值的工作簿链接
对我来说,线索是......
1.想要获取此单元格及其类型的信息
2.使用VSTO来做到这一点
我现在打破这个细胞参考
顺便说一句,如果我的上述假设是正确的,那么请编辑你的问题,以便对未来的读者更有意义。
代码示例
//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!!
另请注意,如果您使用代码INSTEAD,则将“破坏单元格引用”。请注意,您可以保留工作簿链接,但是使用代码方法没有意义。我的建议是一般使用代码,因为它更灵活,但是当你想要速度(配置)并且数据不需要超过基本操作(SUM,IF,基本数学运算符)时利用链接。