尝试在VB.net中设置范围时出现“DBNull”错误。数据库是Excel

时间:2013-07-24 15:48:11

标签: vb.net visual-studio-2010 excel com dbnull

我在VBA中的Excel中编写了一个非常有用的宏,并尝试将其转移到用VB.net编写的独立Windows应用程序。我发现所有引用都令人困惑,现在我在转换代码的一般语法方面遇到了麻烦。

我粘贴在相关代码下方:

  Dim ElevenSheets As Excel.Worksheet
    Dim TwelveSheets As Excel.Worksheet
    Dim ThirteenSheets As Excel.Worksheet
    Dim WorkingSheet As Excel.Worksheet
    Dim xlApp As Excel.Application
    Dim xlWorkBook As Excel.Workbook
    xlApp = New Excel.Application
    xlWorkBook = xlApp.Workbooks.Open("FILENAME.xls") 'Removed file name for company confidentiality purposes.
    ElevenSheets = xlWorkBook.Worksheets("2011")
    TwelveSheets = xlWorkBook.Worksheets("2012")
    ThirteenSheets = xlWorkBook.Worksheets("2013")
    WorkingSheet = xlWorkBook.Worksheets("WorkingSheet")
...
    Cell = WorkingSheet.Range("B3")  '<--- This line causes the error.
            CurrentCell = (Cell.Row & "," & Cell.Column)
            CurrentRow = Cell.Row
            MyColumn = (Cell.Column)
            CurrentCell = (CurrentRow & "," & MyColumn)

所以,正如你所看到的,我已经指出了给我一个错误的那一行。我正在尝试设置范围名称“Cell”,并且错误“MissingMemberException未处理没有找到类型'DBNull'的默认成员”。

有谁知道我做错了什么?我确信这是一个非常简单的语法,但我发现整个过程很困难,并且发现很难理解互联网上其他类似的相似主题。

感谢您为此做好准备并让我知道您是否需要更多背景信息,

约什

2 个答案:

答案 0 :(得分:0)

我没有看到Cell的任何构造函数。此外,您不必明确声明所有这些工作表。您可以使用xlWorkBook(“WorkingSheet”)之类的东西来调用它们。范围(“B3”)

答案 1 :(得分:0)

我通过反复试验解决了这个问题。我这样做的方法就是改变这些声明:

ElevenSheets = xlWorkBook.Worksheets("2011")
TwelveSheets = xlWorkBook.Worksheets("2012")
ThirteenSheets = xlWorkBook.Worksheets("2013")
WorkingSheet = xlWorkBook.Worksheets("WorkingSheet")

对此:

 ElevenSheets = CType(xlWorkBook.Worksheets(1), Excel.Worksheet)
 TwelveSheets = CType(xlWorkBook.Worksheets(2), Excel.Worksheet)
 ThirteenSheets = CType(xlWorkBook.Worksheets(3), Excel.Worksheet)
 WorkingSheet = CType(xlWorkBook.Worksheets(4), Excel.Worksheet)

我不知道将工作表名称更改为工作表编号是固定它还是CType修复了它。但其中一个做到了。

感谢您的贡献!