это, наверное, то, что я должен знать, но я озадачен этим.
Я пытаюсь создать некоторые объекты и могу получить к ним доступ и изменить их глобально.
Я попытался создать публичный модуль и объявить несколько объектов в этом.
Я могу получить доступ к ним из другой подпрограммы, но я получаю ошибку исключения, когда после сборки и запуска процесса и попытки изменить этот объект.
То же самое происходит, если я объявляю объект в Public Class Form1. Например, как это:
Public Class Form1
Public appWord = New Microsoft.Office.Interop.Word.Application
Public wordDoc as Microsoft.Office.Interop.Word.Document
Теперь, в моей кнопке, у меня есть это:
wordDoc = appWord.Documents.Open("c:\temp\test.dot")
appWord.Quit()
appword = Nothing
После того, как я собрал проект и нажал кнопку, я получаю эту ошибку:
Type mismatch. (Exception from HRESULT: 0x80020005(DISP_E_TYPEMISMATCH))
Я пытаюсь запустить Winword.exe, затем загрузить в него шаблон и прочитать некоторые макросы из шаблона. Затем я хочу иметь возможность заменить макрокод из моего приложения и затем сохранить изменения в макросе. И у меня есть подпрограмма Public, которая читает макрос и помещает текст в текстовое поле. А потом у меня есть отдельный Public Sub, который выполняет замену. Однако я пытаюсь найти умный способ создания этих объектов один раз, поэтому мне не нужно делать это снова и снова.
Редактировать: Этого не произойдет, если я объявлю объект в той же подпункте, что и кнопка, например:
Private sub Button1_Click
Dim appWord = New Microsoft.Office.Interop.Word.Application
Dim wordDoc as Microsoft.Office.Interop.Word.Document
wordDoc = appWord.Documents.Open("C:\temp\test.dot")
appWord.Quit()
End sub
Редактировать: Я получил это работает сейчас. Не было ошибки, просто документ не существовал ... Я идиот :)