2011-09-08 56 views
3

我有一个命名单元格在Excel中可以说它的所谓的“myCell” 在C#中,我希望能够访问此单元格并更新其值。 我试过更新的Excel单元格值按名称参考C#

Globals.ThisAddIn.Application.Names.Item(@"myCell").Value = "myValue"; 

但是,这将引发与消息COM异常 '从HRESULT异常:0x800A03EC'

回答

2

您的问题是:

Globals.ThisAddIn.Application.Names.Item(@"myCell") 

不返回一个范围,你可以设置该值,但是是Name类型的对象。您可以使用RefersToRange属性获取表示要查找的单元格的Range,然后设置此对象的值。这一切都转化为这样的事情:

Globals.ThisAddIn.Application.Names.Item(@"myCell").RefersToRange.Value = "myValue"; 
1

只需使用Range对象。命名小区名为Range,所以这应该工作:

myWorkBook.myWorkSheet.Range["myCell"].Value = "myValue"; 

P.D.我无法检查这一点,我不确定您是否可以直接将值分配给Range对象,或者您需要指定Range中的单元格的偏移量(因为它可以包含多个单元格)。

你也可以试试:(我不记得是否指定范围直接与细胞起作用)

myWorkBook.myWorkSheet.Cells["myCell"].Value = "myValue"; 
+0

两者都给出消息非可调用成员'Microsoft.Office.Interop.Excel._Application.Range'不能像方法一样使用。 – Eddie

+1

@Eddie:糟糕,改变这些'('用'['。编辑我的帖子。 – InBetween

+0

仍然触发相同的消息与[] –

0

用途:

var cell = myWorksheet.Evaluate("defined_name"); 
if (cell != null) { cell.Value = "hello"; } 

或者:

myWorksheet.Cells.SetValue("defined_name", "hello"); 

在最后一种情况下,试图建立一个不存在的名字给人的值“来自HRESULT的异常:0x800A03EC”

如果检查null不起作用,请检查this answer获取int值列表为错误。

相关问题