Я пробовал несколько вещей и до сих пор получаю эту ошибку. Я создаю excel VSTO с помощью VBA и Visual Studio.Невозможно передать COM-объект типа «Excel.WorksheetClass» для надстройки VSTO
Способ, которым у меня установлена эта настройка, есть кнопка на ленте и что пользователь может щелкнуть, и она будет проходить через все таблицы. Я предполагаю, что моя проблема заключается в том, что вы фактически подключаетесь к текущему активному экземпляру 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
Оба из которых бросить ту же ошибку
И затем используйте 'vstoWorkbook' как' In' в 'For Each wks In vstoWorkbook'? – Adjit
Пробовал эту, но такую же ошибку, можете ли вы обеспечить ее использование? – Adjit
Я думаю, вы должны объявить переменную Excel.Workbook, создать экземпляр в ActiveWorkbook, прежде чем использовать его в цикле. Что-то вроде: 1) Dim wkb Как Excel.Workbook .... 2) wkb = Globals.ThisAddIn.Application.ActiveWorkbook ... 3) Для каждого wks В Wkb – Malick