我正在将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)
但这对我来说看起来不对。如果赋值是正确的,我会认为对象应该自然具有正确的类型。
所以:有谁知道我应该在这做什么正确的事情?
答案 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)