我在Excel中有一个名为"myCell"的单元格。现在我希望能够在C#中访问并更新这个单元格的值。我已经尝试过:
Globals.ThisAddIn.Application.Names.Item(@"myCell").Value = "myValue";
但是这会抛出一个COM异常,错误信息为“Exception from HRESULT: 0x800A03EC”
您遇到的问题是:
Globals.ThisAddIn.Application.Names.Item(@"myCell")
该函数不返回可设置值的范围,而是返回一个名称类型的对象。您可以使用RefersToRange属性获取表示要查找的单元格的范围,然后为此对象设置值。总体来说,这意味着:
Globals.ThisAddIn.Application.Names.Item(@"myCell").RefersToRange.Value = "myValue";
只需使用Range
对象。命名单元格是一种命名的Range
,因此这应该可以工作:
myWorkBook.myWorkSheet.Range["myCell"].Value = "myValue";
附言:我无法检查这个,也不确定您是否可以直接将值分配给Range
对象,或者您需要指定单元格在Range
内的偏移量(因为它可能包含多个单元格)。
您还可以尝试:(我不记得命名范围是否直接与单元格一起使用)
myWorkBook.myWorkSheet.Cells["myCell"].Value = "myValue";
使用:
var cell = myWorksheet.Evaluate("defined_name");
if (cell != null) { cell.Value = "hello"; }
或者:
myWorksheet.Cells.SetValue("defined_name", "hello");
(
改成[
。我修改了我的帖子。 - InBetween