(通过VB.NET从封闭的Excel工作表中访问名称。)这有什么问题?

时间:2012-07-02 15:44:32

标签: vb.net excel

a)我使用excel 2007中的名称管理器功能为A3到G3指定了名称“abc”

b)我想从VB.NET访问此名称以在循环中分配值

怎么做?我是VB.NET的新手

Excel工作簿将无法打开

我使用通常的VBA代码尝试过它。

For i = 1 To k

costs("abc").RefersToRange.Cells(3, i).value = "Cost" & i

错误:

1)'Microsoft.Office.Interop.Excel.Names'无法编入索引,因为它没有默认属性。

2)循环控制变量不能是属性或后期索引数组。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

如果您使用的是Excel 2007或更高版本,则可以使用OpenXML SDK创建和编辑Excel工作簿,而无需打开Excel本身。 SDK不使用Interop访问Excel,而是使用“原始”Excel文件。我没有专门使用命名范围,但有一个sample使用它们,应该可以帮助你开始。

答案 1 :(得分:0)

您可以按如下方式访问该范围。这将查找excel文件的第一个工作表中定义为abc的名为A3:G3的范围中的所有值:

    'initialise the objects and open the file
    Dim xlApp As New Excel.Application
    Dim xlWorkBook As Excel.Workbook = xlApp.Workbooks.Open("C:\foo\book1.xlsx")
    Dim xlSheet As Excel.Worksheet = xlWorkBook.Worksheets(1)

    For i As Integer = 1 To 7
        xlSheet.Range("abc").Cells(1, i).value = "Cost" & i.ToString
    Next

    'save file
    xlWorkBook.Save()
    'close objects and clean up
    xlWorkBook.Close()
    xlApp.Quit()
    xlSheet = Nothing
    xlWorkBook = Nothing
    xlApp = Nothing