VB: Ошибка загрузки библиотеки типов / DLL. (Исключение из HRESULT: 0x80029C4A (TYPE_E_CANTLOADLIBRARY) - PullRequest
0 голосов
/ 07 мая 2018

Я работаю над приложением, которое должно импортировать данные из Excel.

Мое решение использует Microsoft.office.Interop.Excel.

Но я получаю эту ошибку при отладке:

Сообщение = Невозможно привести COM-объект типа «Microsoft.Office.Interop.Excel.ApplicationClass» для типа интерфейса 'Microsoft.Office.Interop.Excel._Application. Эта операция не удалась потому что QueryInterface вызов COM-компонента для интерфейса с IID '{000208D5-0000-0000-C000-000000000046}' не удалось из-за следующая ошибка: Ошибка загрузки библиотеки типов / DLL. (Исключение из HRESULT: 0x80029C4A (TYPE_E_CANTLOADLIBRARY))

Ниже мой код:

Imports Excel = Microsoft.office.Interop.Excel

Private Sub BExcel1_Click(sender As Object, e As EventArgs) Handles BExcel1.Click
    OpenFileDialog1.Filter = "Excel Files|*.xlsx; *.xls; *.xlsm"
    If (OpenFileDialog1.ShowDialog() = DialogResult.OK) Then
        ExcelPath1.Text = OpenFileDialog1.FileName
    End If

    Dim XlApp As New Excel.Application
    Dim XlWorkBook As Excel.Workbook
    Dim XlWorkSheet As Excel.Worksheet
    XlWorkBook = XlApp.Workbooks.Open(ExcelPath1.Text)

 End Sub

Я гуглил, чтобы найти некоторые решения (как указано ниже), но они не сработали:

  1. Я отремонтировал офис
  2. Я восстановил Visual Studio
  3. Я использовал редактор реестра для проверки Computer\HKEY_CLASSES_ROOT\TypeLib\, но под 00020813-0000-0000-C000-000000000046 я получил только одну версию 1.9, похоже, что конфликт между двумя версиями не похож?

Есть идеи, как решить эту проблему?

VS version:2017 community

Excel version:2016

Microsoft.Office.Interop.Excel version:15.0.0.0

1 Ответ

0 голосов
/ 07 мая 2018

Прежде всего, попробуйте запустить Visual Studio с аргументом командной строки /ResetUserData. Подробнее об этом читайте в ошибке «Невозможно привести объект COM ...» при экспорте в Microsoft Excel из статьи Team Explorer 2008 .

Очевидно, вы пытаетесь подключиться к неправильной версии Excel. Похоже, у вас остались некоторые дополнительные ключи реестра Windows после удаления старой версии Office или наоборот. В любом случае, посмотрите на Как решить «Невозможно привести COM-объект типа Microsoft.Office.Interop.Excel.ApplicationClass» к типу интерфейса «Microsoft.Office.Interop.Excel._Application» » blog пост, который описывает точно такую ​​же проблему. В основном вам нужно найти неправильную запись в реестре Windows, а затем удалить ее.

Кстати, когда вы добавляете новую ссылку COM в проект, автоматически создается пропущенная PIA (если она больше не существует). Итак, это возможный путь. Также вы можете попробовать встроить типы взаимодействия в вашу собственную сборку, как показано на следующем скриншоте:

enter image description here

...