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 は、'Object' から 'Microsoft.Office.Interop.Excel.Worksheet' への暗黙的な変換を禁止します

行を次のように置き換えることで、これを解消できます

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

しかし、それは私にとって正しいことのようには見えません。割り当てが正しい場合、オブジェクトは当然正しい型を持つべきだと思っていたでしょう。

だから:私がここで何をすべきか知っている人はいますか?

4

1 に答える 1

2

.NET は VBA コレクションを理解できないため、(Option Strict がオンの場合) 型の変換なしでは不可能です。

このバグ レポートは次の問題に関連していると思います。

このページ (VBA から Visual Basic .NET へのコードの変換)の Excel の例を見ると、次のコードが表示されます。

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

この問題については、こちらこちらのようにいくつかの投稿がありましたが、これ以上良い方法はないようです。

于 2012-07-03T09:52:26.417 に答える