在Excel中设置命名范围的值

时间:2013-03-17 02:56:02

标签: vb.net excel named-ranges

如果这是一个总的菜鸟问题,我道歉。我正在为Excel编写插件。我有一个子内部class1打开一个excel文件,在这个子我有一个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

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

3 个答案:

答案 0 :(得分:2)

最后我让这个工作正常。这就是它需要工作的方式。感谢您的帮助。

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

答案 1 :(得分:1)

'First Attempt Here
TheRange = ExcelApp.ActiveWorkbook.Names.Item(RangeName)
TheRange.Value = RangeValue

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

TheName.Value = RangeValue

不是正确的任务;根据{{​​3}}此属性 - 返回或设置一个String值,该值表示名称定义为引用的公式。

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

答案 2 :(得分:0)

我刚做了一个能让我更容易找到&使用我的命名范围替换:

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

然后我会这样称呼它来替换东西:

XlFindReplace(xlC1Sheet, "client1Co1Tax", client1Co1Tax)
  • 其中xlC1Sheet是我目前
  • 的工作表
  • "client1Co1Tax"是excel中范围的名称
  • client1Co1Tax是字符串变量I' m替换它

感谢大家的投入。