У меня возникла проблема с этим фрагментом кода, и я не совсем уверен, что проблема должна быть честной. Первоначальная проблема заключалась в том, что приложение, которое я написал, открывает экземпляр слова, но если на компьютере уже есть экземпляр слова, он просто открывает второй экземпляр, но он не вставляет документ, который я создаю внутри этого экземпляра , То, что у меня получается, - это два окна: один, если сам Word, ни один документ, а другой - это Word и документ. Их оригинальное приложение для запуска приложений по-прежнему работает как обычно, в его собственной комбинации Word/Document, как и должно было быть. Я попытался обойти эту проблему, захватив исполняемый экземпляр Word через getObject, но он просто продолжает возвращать сбой.GetObject возвращает H_RESULT E_FAIL
Я читал, что вы должны дать слово фокус и затем потерять фокус для того, чтобы получить перечисленные с ROT, но даже после ожидания 10 минут, она по-прежнему возвращает следующее сообщение об ошибке:
AnswerWizard = { "HRESULT ошибки E_FAIL был возвращен из вызова COM-компонента. "}
Мне было интересно, есть ли что-то, что мне не хватает в getObject и возможность ссылки на другой экземпляр приложения Office, вызывающего эту ошибку?
Информация:
для Windows 7
Слово 2003
Desktop VB Application
Код:
Private wordApp As Word.Application
Public Sub New()
Try
wordApp = CType(GetObject(, "Word.Application"), Word.Application)
Catch ex As Exception
wordApp = New Word.Application
End Try
End Sub
Примечание: Протестировано и без CType не имеет значения. Он работает, если нет ни одного экземпляра слова, но это только потому, что оно относится к моему исключению.
Проблема:
Если я пытаюсь связать в уже запущенный экземпляр Word, код проходит через без метания ошибку, но я получаю AnswerWizard = { "Ошибка HRESULT E_FAIL был возвращен из вызова к COM-компоненту. "}. Затем мой код продолжает открывать экземпляр пустого слова, а слово/документ - в общей сложности два окна, когда их должно быть только одно. Я что-то пропустил в getObject?
Как раз так я получаю то, что вы говорите тогда, я должен создать экземпляр Dim wordapp как New Word.Application, а затем использовать wordApp.Selection для генерации моих документов? Конечная цель, которую я пытаюсь сделать, - это остановить эту проблему с двойным открытием. – Gyhth
Вы меня правильно поняли. хотя у меня не было проблемы с двойным открытием. MS говорит, что Word 2003 открывается невидимо (я работаю с Vista/Word 2007), поэтому, возможно, есть проблема, когда вы делаете это видимым ... – grahamj42
Я не думал об этом, если честно. У меня есть функция, которая вызывается каждый раз, когда я сгенерирую новый документ, и устанавливает wordApp.Visible в true каждый раз, когда создается новый документ. Должен ли я когда-либо вызывать wordApp.Visible один раз по всему предмету, или это то, что устанавливает видимость для ВСЕХ документов там после? – Gyhth