在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”的隐式转换
我可以通过replace这个行来解决这个问题
xlsheet = CType(xlwbook.Sheets(1), Excel.Worksheet)
但是对我来说这看起来不对。 如果分配是正确的,我会认为这个对象自然应该有正确的types。
所以:有人知道我应该在这里做什么正确的事情吗?
这是不可能的,没有types的转换(如果Option Strict Is On),因为.NET不能理解VBA集合。
我相信这个错误报告 与这个问题有关:
如果你看看这个页面上的Excel示例(将代码从VBA转换到Visual Basic .NET) ,那么它将显示以下代码:
Dim ThisWorksheet As Excel.Worksheet = _ CType(ThisWorkbook.Worksheets.Item("Sheet1"), Excel.Worksheet)
关于这个问题, 在这里和这里有几个post,但似乎没有更好的方法。