如果这是一个总的菜鸟问题,我道歉。我正在为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
我无法让任何一个人工作。任何帮助表示赞赏。
答案 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替换它感谢大家的投入。