来自ALBPM的COM集成 – 无法find“{00020906-0000-0000-C000-000000000046}”的IDispatch

我正在尝试使用Office COM组件来创buildWord和Excel文档。 不幸的是,我无法做到这一点,因为我得到一个错误。

在模块“{00020905-0000-0000-C000-000000000046}”,v8.3中找不到“{00020906-0000-0000-C000-000000000046}”的IDispatch

我试图重新安装Office,我的应用程序(ALBPM)和我的界面(combsvc),但它不工作。

我想知道如何安装IDispatch,或者如何知道它是否安装在正确的模块中。 有些时候,错误说:

找不到“{000209FF-0000-0000-C000-000000000046}”的IDispatch …而不是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或这些registry项的信息都会非常感谢,即使您可以告诉我在哪里可以find关于此的更多信息。

非常感谢。 丹尼尔。

从你得到的错误我假设你正在使用Word 2003。

你确定COM brigde服务是否正确安装并运行?

 combsvc -install combsvc -start 

将注册combsvc作为服务,然后启动它。

请参阅ALBPM参考指南中第150页底部的Word示例。

事实上,它有时工作,有时可能是一个问题与ALBPM。 你使用最新的版本和更新?

另一个选项 – Word自动化相当常见的问题是Word的自动化实例显示一个模式对话框,正在等待用户交互。 您可以通过设置来切换modal dialog的显示

 Application.DisplayAlerts = 0 

但是,这不幸的是不会阻止所有popup窗口显示。

实际上是否有Word的实例启动? 如果是这样,你可以使窗口可见,看是否可以打开文件,或者是否有一个popup窗口阻止应用程序?

丹尼尔,

我正在黑暗中刺中。 看起来您正在使用BEA系统Aqualogic BPM,我有一个感觉是基于Java的工具。 从挖掘看来,它看起来像combsvc实际上是一个COM桥梁服务,以允许ALBPM从Java说COM:

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的基础设施的一部分,如果这被打破,你会看到更多的问题与您的机器。

我可能会build议在这里popup一个问题:

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

要检查您的PC上安装的COM接口,我build议您下载Windows 2003资源工具包的一部分oleview.exe

我实际上有{00020906-0000-0000-C000-000000000046},但也没有IDispatch接口,并尝试创build它的一个实例时,得到一个“类未注册”的错误。 我的家用电脑没有安装办公室工具,这是最有可能的原因。

在过去,当自动化Office应用程序时,我总是能够与版本独立的ProgID(如“Excel.Application”)进行通信。 你确定你引用了正确的COM对象吗? 检查出来在oleview或给我们一些更多的代码来啃:)

我正在使用的代码是这样的,但我什至不能看到第一个日志,所以我假设有一个错误的连接,而不是代码

 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 
Interesting Posts