如何使用 Microsoft.Office.Interop 引用 Visual Studio 中的 Excel NamedRange

How to refer to an Excel NamedRange in Visual Studio using Microsoft.Office.Interop

我正在从 VBA 过渡到 VB.NET 以获得使用 ExcelDNA 的 Excel 插件。在我的代码中,我试图通过名称引用 NamedRange(就像我在 VBA 中所做的那样)以设置该名称的 'ReferTo' 属性。但是,我得到一个错误,它无法将我提供的名称转换为整数。错误:从字符串 "MyNamedRangeName" 到类型 'Integer' 的转换无效。

在下面的代码中,您可以看到错误发生的位置和原因。

Imports Microsoft.Office.Interop
Imports ExcelDna.Integration
Public Class Class1
    Sub SetReferToProperty()
        Dim ap As Excel.Application = ExcelDnaUtil.Application
        Dim wb as Excel.Workbook = ap.ActiveWorkbook

        'This is where the error occurs. Apparently, I can't (?) refer to    
        'the NamedRange by it's name. I need to use it's index.
        wb.Names("MyNamedRangeName").RefersTo = 0

        'If I use the Index instead (assume it's 1) it will work, but I
        'want to use the name instead - not the index.
        wb.Names(1).RefersTo = 0
    End Sub
End Class        

有时(我不确定确切时间)VB.NET 需要您明确指定集合 属性(在本例中为 Items),而默认索引器不会不工作。所以你需要说:

 wb.Names.Item("MyNamedRangeName").RefersTo = 0

请注意,如果您想添加新名称,您会说:

wb.Names.Add("MyNamedRangeName", 0)