我在excel中有一个命名的单元格,假设它在C#中叫做"myCell“,我希望能够访问这个单元格并更新它的值。我试过了
Globals.ThisAddIn.Application.Names.Item(@"myCell").Value = "myValue";
但这会引发COM异常,并显示消息“exception from HRESULT: 0x800A03EC”。
发布于 2011-09-08 10:21:15
你的问题是:
Globals.ThisAddIn.Application.Names.Item(@"myCell")
不返回可为其设置值的范围,而是返回名称类型的对象。您可以使用RefersToRange属性获取表示要查找的单元格的范围,然后设置此对象的值。这一切都可以转化为这样的东西:
Globals.ThisAddIn.Application.Names.Item(@"myCell").RefersToRange.Value = "myValue";
发布于 2011-09-08 09:47:34
只需使用Range
对象。命名的单元格是一个命名的Range
,所以这应该是可行的:
myWorkBook.myWorkSheet.Range["myCell"].Value = "myValue";
P.D.我无法检查这一点,我不确定您是否可以将值直接赋给Range
对象,或者您是否需要指定Range
中单元格的偏移量(因为它可以包含许多单元格)。
您也可以尝试:(我不记得命名范围是否直接与单元格一起使用)
myWorkBook.myWorkSheet.Cells["myCell"].Value = "myValue";
发布于 2014-11-18 10:24:39
使用:
var cell = myWorksheet.Evaluate("defined_name");
if (cell != null) { cell.Value = "hello"; }
或者:
myWorksheet.Cells.SetValue("defined_name", "hello");
在最后一种情况下,尝试为不存在的名称设置值时会出现"Exception from HRESULT: 0x800A03EC“。
如果检查null
不起作用,请检查this answer以查看错误的int值列表。
https://stackoverflow.com/questions/7345782
复制相似问题