在Excel中设置命名范围的值

我很抱歉,如果这是一个总问题。 我正在为Excel编写插件。 我有一个子类,打开一个excel文件,在这个sub1我有一个sub2的参考下面。 所有我想要做的是挂钩到Excel的活动实例,更改命名的范围值并退出。 但是,无论我尝试哪种方式,我都会收到错误。 这是我的。 告诉我我哪里出了错。 忘了提及,这是在VB.NET中。

Private Sub SetRangeValue(ByVal RangeName As String, ByVal RangeValue As String) Dim ExcelApp As Excel.Application Dim TheRange As Excel.Range Dim TheRangeName As String = "" 'Hook into running excel instance ExcelApp = CType(Marshal.GetActiveObject("Excel.Application"), Excel.Application) 'First Attempt Here TheRange = ExcelApp.ActiveWorkbook.Names.Item(RangeName) TheRange.Value = RangeValue 'Second Attempt TheRange = ExcelApp.Range(RangeName) TheRange.Value = RangeValue End Sub 

我不能让任何一个人工作。 任何帮助表示赞赏。

最后我得到这个正常工作。 这是如何工作的。 感谢所有的帮助。

 Private Sub SetRangeValue(ByVal RangeName As String, ByVal RangeValue As String) Dim ExcelApp As Excel.Application 'Dim TheRangeObj As Excel.Range Dim TheRange As Microsoft.Office.Interop.Excel.Name Dim TheRangeName As String = "" 'Hook into running excel instance ExcelApp = CType(Marshal.GetActiveObject("Excel.Application"), Excel.Application) TheRange = ExcelApp.ActiveWorkbook.Names.Item(RangeName) TheRange.RefersToRange.Value = RangeValue End Sub 
 'First Attempt Here TheRange = ExcelApp.ActiveWorkbook.Names.Item(RangeName) TheRange.Value = RangeValue 

根据Names.Item方法(Excel) ,该函数从Names集合中返回一个Name对象。 在这种情况下TheRange不是这个variables的有效名称,它应该是TheName。 然后

 TheName.Value = RangeValue 

是不正确的任务; 根据Name.Value属性(Excel)此属性 – 返回或设置一个string值,该值表示名称被定义为引用的公式。

错误0x800A03EC,从Excel返回这个错误有多种原因 – 最常见的是当试图写入大于Excel的数据可以处理。 例如,您尝试将长度超过1024个字符的string写入Excel中的单元格

我只是做了一个子,这将使我更容易find并使用我命名的范围replace:

 Private Sub XlFindReplace(ByRef xSheet As Excel.Worksheet, ByVal cellName As String, ByVal NewText As String) xSheet.Range(cellName).Value = NewText End Sub 

那么T'd这样称呼它来取代东西:

 XlFindReplace(xlC1Sheet, "client1Co1Tax", client1Co1Tax) 
  • xlC1Sheet是我目前的工作表
  • "client1Co1Tax"是excel中的范围名称
  • client1Co1Tax是我replace它的stringvariables

感谢大家的意见。