1

我正在将一个 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 不允许从“对象”到“Microsoft.Office.Interop.Excel.Worksheet”的隐式转换

我可以通过将线替换为

xlsheet = CType(xlwbook.Sheets(1), Excel.Worksheet)

但这对我来说似乎不是正确的做法。如果分配是正确的,我会认为对象自然应该具有正确的类型。

那么:有人知道我应该在这里做什么正确的事情吗?

4

1 回答 1

2

没有类型转换(如果 Option Strict 为 On)是不可能的,因为 .NET 无法理解 VBA 集合。

我相信这个错误报告与这个问题有关

如果您查看此页面上的 Excel 示例(将代码从 VBA 转换为 Visual Basic .NET),那么它会显示以下代码:

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

有几个关于这个问题的帖子,比如这里这里,但似乎没有更好的解决方法。

于 2012-07-03T09:52:26.417 回答