C# 在C中按名称引用更新Excel单元格值#
我在excel中有一个命名的单元格,比如说它叫“myCell” 在C#中,我希望能够访问此单元格并更新其值。 我试过了C# 在C中按名称引用更新Excel单元格值#,c#,excel,interop,C#,Excel,Interop,我在excel中有一个命名的单元格,比如说它叫“myCell” 在C#中,我希望能够访问此单元格并更新其值。 我试过了 Globals.ThisAddIn.Application.Names.Item(@"myCell").Value = "myValue"; 但这会引发一个COM异常,消息为“exception from HRESULT:0x800A03EC”只需使用范围对象即可。命名单元格是一个命名的范围,因此应该可以: myWorkBook.myWorkSheet.Range["myCe
Globals.ThisAddIn.Application.Names.Item(@"myCell").Value = "myValue";
但这会引发一个COM异常,消息为“exception from HRESULT:0x800A03EC”只需使用
范围
对象即可。命名单元格是一个命名的范围
,因此应该可以:
myWorkBook.myWorkSheet.Range["myCell"].Value = "myValue";
p.D.我无法检查这一点,我不确定您是否可以将值直接分配给范围
对象,或者您需要指定范围
内单元格的偏移量(因为它可以包含许多单元格)
您也可以尝试:(我不记得命名范围是否直接用于单元格)
你的问题是:
Globals.ThisAddIn.Application.Names.Item(@"myCell")
不返回可以为其设置值的范围,而是返回类型为Name的对象。可以使用refrestorange属性获取表示要查找的单元格的范围,然后设置此对象的值。这一切都可以转化为如下内容:
Globals.ThisAddIn.Application.Names.Item(@"myCell").RefersToRange.Value = "myValue";
使用:
或:
在最后一种情况下,尝试为不存在的名称设置值会导致“来自HRESULT的异常:0x800A03EC”
如果检查
null
不起作用,请检查作为错误的int值列表。两者都会显示一条消息,即非发票成员“Microsoft.Office.Interop.Excel.\u Application.Range”不能像方法一样使用。@Eddie:Oops,用[
更改这些(
。编辑了我的帖子。仍然用[]
Globals.ThisAddIn.Application.Names.Item(@"myCell").RefersToRange.Value = "myValue";
var cell = myWorksheet.Evaluate("defined_name");
if (cell != null) { cell.Value = "hello"; }
myWorksheet.Cells.SetValue("defined_name", "hello");