#vb.net #automation #visual-studio-2019
#vb.net #автоматизация #visual-studio-2019
Вопрос:
Я разрабатываю приложение form в немецкой Visual Studio 2019, которое должно автоматизировать Word с помощью VB. В моем проекте VB я добавил ссылку на Microsoft.Офис.Interop.Word.dll и может скомпилировать приложение. Для отладки приложения в VS я использую код:
Dim oWord As Microsoft.Office.Interop.Word.Application
oWord = CreateObject("Word.Application")
oWord.Visible = True
Этот тривиальный код должен создавать экземпляр и показывать Word. Однако вместо этого я получаю исключение, что Microsoft.Офис.Interop.Word.ApplicationClass не может быть приведен в Microsoft.Офис.Interop.Word._Application
System.InvalidCastException: Das COM-Objekt des Typs "Microsoft.Office.Interop.Word.ApplicationClass" kann nicht in den Schnittstellentyp "Microsoft.Office.Interop.Word._Application" umgewandelt werden. Dieser Vorgang konnte nicht durchgeführt werden, da der QueryInterface-Aufruf an die COM-Komponente für die Schnittstelle mit der IID "{00020970-0000-0000-C000-000000000046}" aufgrund des folgenden Fehlers nicht durchgeführt werden konnte: Fehler beim Laden der Typbibliothek/DLL. (Ausnahme von HRESULT: 0x80029C4A (TYPE_E_CANTLOADLIBRARY))
Насколько я понял, причина не совсем ясна. Некоторые предполагают, что причиной является установка нескольких версий Word, что приводит к несовместимости версий и исключению. Чтобы устранить проблему, они предлагают удалить двойные элементы {00020970-0000-0000-C000-000000000046} в реестре Windows. Я пробовал, но проблема остается.
Как мне решить проблему или у кого-нибудь есть аналогичный пример проекта автоматизации в VB (VB # или VC ) Я могу поэкспериментировать с?
Комментарии:
1. Нет, это тоже не работает.
2. Ваш комментарий к ответу Мэри подразумевает, что у вас есть другой проект, который работает, но эта проблема специфична для этого проекта. Попробуйте следующее. 1) Создайте резервную копию вашего проекта. 2) Удалите папки Bin и Obj через проводник. 3) В VS удалите все ссылки Office, а затем снова добавьте ссылку на Word для вкладки References-> COM, выбрав «Библиотека объектов Microsoft Word XX.Y» (XX. Y будет зависеть от установленной версии). 4) Перестройте проект.
Ответ №1:
В верхней части файла…
Imports Microsoft.Office.Interop
Затем создайте объект с ключевым словом New, которое вызывает конструктор.
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
Dim oWord As New Word.Application
oWord.Visible = True
End Sub
Комментарии:
1. Спасибо, @Mary, но это тоже не работает и выдает то же исключение. У меня уже есть рабочий VB-проект для тестирования моей среды, и этот проект не работает в моей среде .
Ответ №2:
Причиной этого исключения была Windows с поврежденным реестром.