VB.Net中的Excel工作表分配无法编译

时间:2012-07-03 09:13:21

标签: vb.net excel

我正在将VB6应用程序转换为VB.Net并且在基础知识方面遇到了麻烦。我从: -

开始
Dim xl As Excel.Application
Dim xlsheet As Excel.Worksheet
Dim xlwbook As Excel.Workbook

xl = New Excel.Application
xlwbook = xl.Workbooks.Open(my_data.file_name)
xlsheet = xlwbook.Sheets(1)

但是最后一行没有编译;它报告

  

Option Strict On禁止从'Object'到'Microsoft.Office.Interop.Excel.Worksheet'的隐式转换

我可以通过用

替换行来消除这种情况
xlsheet = CType(xlwbook.Sheets(1), Excel.Worksheet)

但这对我来说看起来不对。如果赋值是正确的,我会认为对象应该自然具有正确的类型。

所以:有谁知道我应该在这做什么正确的事情?

1 个答案:

答案 0 :(得分:2)

如果没有类型转换(如果选项严格打开)则无法实现,因为.NET无法理解VBA集合。

我认为this bug report相关来解决问题:

如果查看this page (Converting Code from VBA to Visual Basic .NET)上的Excel示例,则会显示以下代码:

Dim ThisWorksheet As Excel.Worksheet = _
        CType(ThisWorkbook.Worksheets.Item("Sheet1"), Excel.Worksheet)

关于此问题有几篇关于herehere的帖子,但似乎没有更好的解决方法。