我使用涡轮德尔福2006。

在DLL将在Excel中被称为一个VBA / DLL组合的一部分。

问题的第一部分是试图找出如何传递给DLL到当前Excel会话的引用。我见过的大多数其他的代码是,它推出的Excel一个单独的实例,从你所在的一个分开。

我已经看到,在为IDispatch对象的方法创建IDispatch的一个实例,并然后传递一些东西C ++代码,但不知道多少C ++。

任何想法?

有帮助吗?

解决方案

什么你描述被称为写一个COM插件。您需要创建一个自动化DLL和落实 IDTExtensibility2 接口。然后,将获得了Excel Application接口作为一个参数到OnConnection方法。

您还需要注册你的作为插件所以Excel的DLL将自动加载它。

编辑:忘记了提:你可能想看看的外接快递。他们的框架和组件构成入门与Office创建的加载项ridiculuously容易。你绝对不会有IDTExtensibility2的细节打扰。所有带有一个(井对齐)的价格标签,虽然。

其他提示

德尔福提供了一组ActiveX控件给予Excel和其他Office应用程序的完全访问权限。他们应该是在工具选项板的“服务器”选项卡上。

如果不存在,然后选择零部件|安装软件包,并有向下滚动列表,直到最后一刻,并选择合适的包

在默认安装中,它们应该被称为:

微软办公自动化样品服务器包装部件

和应该有一个用于XP和Win2k的。在XP的人会为Vista的工作。

现在,如果你想要自动化Excel。

如果您只是想通过使用德尔福将功能添加到Excel中,我建议使用一个COM对象,因为我怀疑Excel中很接受COM对象。否则,你可以建立一个DLL直,并使用Excel用于任何其他DLL以同样的方式。

我不知道很多有关Office,但我猜你应该使用的COM / ActiveX。然后,你也可以得到你的IDispatch接口。请参见 http://delphi.about.com/od/comoleactivex/OLE_COM_DCOM_Automation_ActiveX_Delphi_knowledge_base.htm

scroll top