1

如果这是一个完全的菜鸟问题,我深表歉意。我正在为 Excel 编写插件。我在 class1 中有一个 sub 可以打开一个 excel 文件,在这个 sub 中我有一个对 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

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

4

3 回答 3

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
于 2013-03-17T14:34:41.807 回答
1
'First Attempt Here
TheRange = ExcelApp.ActiveWorkbook.Names.Item(RangeName)
TheRange.Value = RangeValue

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

TheName.Value = RangeValue

不是正确的赋值;根据Name.Value 属性 (Excel),此属性 - 返回或设置一个字符串值,该值表示定义名称要引用的公式。

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

于 2013-03-17T05:37:09.790 回答
0

我刚刚制作了一个子程序,可以让我更轻松地使用我的命名范围查找和替换:

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

然后T会这样称呼它以替换东西:

XlFindReplace(xlC1Sheet, "client1Co1Tax", client1Co1Tax)
  • xlC1Sheet是我目前的工作表
  • "client1Co1Tax"是excel中范围的名称
  • 并且client1Co1Tax是我要替换的字符串变量

感谢大家的意见。

于 2017-06-15T08:02:41.390 回答