写在Delphi的Excel中的DLL
题
我使用涡轮德尔福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一>