Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中按名称引用更新Excel单元格值#_C#_Excel_Interop - Fatal编程技术网

C# 在C中按名称引用更新Excel单元格值#

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

我在excel中有一个命名的单元格,比如说它叫“myCell” 在C#中,我希望能够访问此单元格并更新其值。 我试过了

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");