Интеграция COM из ALBPM - не удается найти IDispatch для '{00020906-0000-0000-C000-000000000046}'

Я пытаюсь использовать компоненты Office COM для создания документов Word и Excel. К сожалению, я не могу этого добиться, потому что получаю ошибку.

Не удается найти IDispatch для '{00020906-0000-0000-C000-000000000046}' в модуле '{00020905-0000-0000-C000-000000000046}', версия 8.3

Я попытался переустановить Office, мое приложение (ALBPM) и мой интерфейс (combsvc), но он не работает.

Я хочу знать, как я могу установить IDispatch или как узнать, установлен ли он в правильном модуле. Иногда ошибка говорит:

Не удается найти IDispatch для '{000209FF-0000-0000-C000-000000000046}' ... вместо 00020906-0000-0000-C000-000000000046

Код, который я использую, генерирует эти ошибки:

wordAppl.visible = false
wordDocs = wordAppl.documents

contratoTemplate = "C:\\albpmFiles\\mandatory\\aTemplate.doc"
// .doc template
convenioTemplate = "C:\\albpmFiles\\mandatory\\ConvenioModificatorio.doc"
// .doc template
saveContrato = "C:\\albpmFiles\\temp\\"
// where to save.
saveConvenio = "C:\\albpmFiles\\temp\\"

contratoName = "NewContact.doc"
wordDoc = open(wordDocs, fileName : contratoTemplate)
bookmark = item(wordDoc.bookmarks, index : "atrDescripcion")

insertAfter bookmark.range
using text = instSolicitud.atrDescripcion
bookmark = item(wordDoc.bookmarks, index : "atrObjProveedor_atrNombre")
insertAfter bookmark.range
using text = instSolicitud.atrObjProveedor.atrNombre
bookmark = item(wordDoc.bookmarks, index : "atrObjProveedor_atrDireccion")
insertAfter bookmark.range
using text = instSolicitud.atrObjProveedor.atrDireccion
filename = saveContrato + contratoName

end

// Extras - Fin
saveAs wordDoc
using fileName = filename

Будем весьма благодарны за любую имеющуюся у вас информацию об IDispatch или об этих записях в реестре, даже если вы подскажете, где найти дополнительную информацию об этом.

Большое спасибо. Дэниел.

4 ответа

Из полученной ошибки я предполагаю, что вы используете Word 2003.

Вы убедились, что служба COM brigde правильно установлена ​​и работает?

combsvc -install
combsvc -start

зарегистрирует combsvc как сервис и запустит его.

Пожалуйста, взгляните также на пример для Word внизу страницы 150 в Справочном руководстве ALBPM.

Тот факт, что это иногда работает, а иногда может быть проблемой с ALBPM. Используете ли вы последнюю версию и обновления?

Другой вариант - и довольно частая проблема с автоматизацией Word - это то, что автоматизированный экземпляр Word отображает модальное диалоговое окно и ожидает взаимодействия с пользователем. Вы можете переключить отображение модальных диалогов, установив

Application.DisplayAlerts = 0 

Однако, к сожалению, это не помешает отображению всех всплывающих окон.

Есть ли на самом деле экземпляр Word запущен? Если да, можете ли вы сделать окно видимым и посмотреть, можно ли открыть документы или есть всплывающее окно, блокирующее приложение?

Daniel,

Я беру удар здесь в темноте. Похоже, вы используете системы BEA Aqualogic BPM, которые, как я чувствую, являются инструментом на основе Java. Из всего этого видно, что combsvc на самом деле является службой COM-моста, позволяющей ALBPM общаться с COM из Java:

http://edocs.bea.com/albsi/docs60/studio/index.html?t=studio/catalog/catalog_component/COM/c_COM_Bridge.html

Я думаю, что это ваша точка отказа.

Что касается вашего вопроса по IDispatch, вы на самом деле не устанавливаете IDispatch. IDispatch - это интерфейс, используемый COM для представления объектов, методов и свойств для клиентов COM с поздней привязкой, таких как языки сценариев (например, ASP или VBScript). Это часть инфраструктуры COM, если она будет сломана, вы увидите гораздо больше проблем с вашей машиной.

Я бы посоветовал выложить вопрос здесь:

http://forums.oracle.com/forums/forum.jspa?forumID=560

Код, который я использую, такой, но я не могу даже увидеть первый журнал, поэтому я предполагаю, что есть ошибка с соединением, а не с кодом

wordAppl.visible = false
wordDocs = wordAppl.documents



contratoTemplate = "C:\\albpmFiles\\mandatory\\aTemplate.doc"

// .doc template
convenioTemplate = "C:\\albpmFiles\\mandatory\\ConvenioModificatorio.doc"

// .doc template
saveContrato = "C:\\albpmFiles\\temp\\"

// where to save.
saveConvenio = "C:\\albpmFiles\\temp\\"


contratoName = "NewContact.doc"

wordDoc = open(wordDocs, fileName : contratoTemplate)


bookmark = item(wordDoc.bookmarks, index : "atrDescripcion")

insertAfter bookmark.range
using text = instSolicitud.atrDescripcion

bookmark = item(wordDoc.bookmarks, index : "atrObjProveedor_atrNombre")

insertAfter bookmark.range
using text = instSolicitud.atrObjProveedor.atrNombre

bookmark = item(wordDoc.bookmarks, index : "atrObjProveedor_atrDireccion")

insertAfter bookmark.range
using text = instSolicitud.atrObjProveedor.atrDireccion


filename = saveContrato + contratoName


end



// Extras - Fin
saveAs wordDoc
using fileName = filename

Чтобы проверить установленные COM-интерфейсы на вашем компьютере, я предлагаю вам скачать oleview.exe, который является частью набора ресурсов Windows 2003

На самом деле у меня {00020906-0000-0000-C000-000000000046}, но также нет интерфейса IDispatch, и я получаю сообщение об ошибке "Класс не зарегистрирован" при попытке создать его экземпляр. На моем домашнем ПК не установлены офисы, только инструменты Office, что, скорее всего, является причиной.

В прошлом при автоматизации приложений Office я всегда мог общаться с независимыми от версии ProgID, такими как "Excel.Application". Вы уверены, что ссылаетесь на правильные COM-объекты? Проверьте это в oleview или дайте нам немного кода, чтобы поработать:)

Другие вопросы по тегам