2011-09-08 110 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值列表爲錯誤。

相關問題