我嘗試過幾件事情,但仍然收到此錯誤。我正在使用VBA和Visual Studio創建一個excel VSTO。無法投射VSTO插件類型'Excel.WorksheetClass'的COM對象
我有這種設置的方式是在功能區中有一個按鈕,用戶可以單擊它並通過並取消列出所有表。我想我的問題在於實際掛鉤到Excel的當前活動實例以遍歷工作表。
An exception of type 'System.InvalidCastException' occurred in ConvertAllTablesToRange.dll but was not handled in user code
Additional information: Unable to cast COM object of type 'System.__ComObject' to interface type 'Microsoft.Office.Tools.Excel.Worksheet'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{297DC8D9-EABD-45A1-BDEF-68AB67E5C3C3}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).
這是我已經試過:
Private Sub Button1_Click(sender As Object, e As RibbonControlEventArgs) Handles Button1.Click
Dim wks As Worksheet, objList As ListObject
For Each wks In Globals.ThisAddIn.Application.ActiveWorkbook ' ERROR LINE
For Each objList In wks.ListObjects
objList.Unlist()
Next objList
Next wks
End Sub
和
Private Sub Button1_Click(sender As Object, e As RibbonControlEventArgs) Handles Button1.Click
Dim wks As Worksheet, objList As ListObject
Dim exApp As Excel.Application
exApp = Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets
For Each wks In exApp.Worksheets
For Each objList In wks.ListObjects
objList.Unlist()
Next objList
Next wks
End Sub
這兩者拋出同樣的錯誤
然後在'For Each wks In vstoWorkbook'中使用'vstoWorkbook'作爲'In'? – Adjit
試過這個,但同樣的錯誤,你能提供這個用法嗎? – Adjit
我認爲你必須聲明一個Excel.Workbook變量,在ActiveWorkbook中實例化之後才能在循環中使用它。例如:1)昏暗的wkb作爲Excel.Workbook .... 2)wkb = Globals.ThisAddIn.Application.ActiveWorkbook ... 3)對於每個wks在Wkb – Malick