2012-07-03 48 views
1

我正在將VB6應用程序轉換爲VB.Net,並且遇到了基本問題。我開始與: -VB.Net中的Excel工作表賦值無法編譯

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) 

但最後一行不編譯;它報告

選項嚴格On不允許從「對象」隱式轉換爲「Microsoft.Office.Interop.Excel.Worksheet」

我可以讓這個消失與替換線

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

但這看起來對我來說並不合適。如果分配是正確的,我會認爲該對象自然應該具有正確的類型。

所以:有人知道我應該在這裏做什麼正確的事情嗎?

回答

2

這也不是沒有可能類型的轉換(如果Option Strict爲開),因爲.NET無法理解一個VBA集合。

我相信this bug report相關這個問題:

如果你看看Excel的實例上this page (Converting Code from VBA to Visual Basic .NET),那麼就說明這個代碼:

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

已經有幾個崗位約這個問題像herehere,但似乎沒有更好的方法。

+0

謝謝。我已經設置了Option Strict Off,它具有類似的效果。我不能說我非常喜歡它,但是如果必須完成,就必須完成。 –

+1

我個人建議讓Option Strict On離開並進行類型轉換 - 從長遠來看,這必須更安全。 –

相關問題