用Delphi编写Excel的动态链接库

用Delphi编写Excel的动态链接库,delphi,excel,vba,dll,idispatch,Delphi,Excel,Vba,Dll,Idispatch,我使用的是turbodelphi2006 DLL将作为VBA/DLL组合的一部分从Excel中调用 问题的第一部分是试图找出如何向DLL传递对当前Excel会话的引用。我见过的大多数其他代码是,它启动了一个单独的Excel实例,与您所在的实例不同 我见过一些C++代码,它创建了一个实例:IDISPosiv/Cudio>,然后将一些东西传递给IDISPosik对象的方法,但不知道多少C++。 有什么想法吗?我对Office不太了解,但我想你应该使用COM/ActiveX。然后你也会得到你的IDis

我使用的是turbodelphi2006

DLL将作为VBA/DLL组合的一部分从Excel中调用

问题的第一部分是试图找出如何向DLL传递对当前Excel会话的引用。我见过的大多数其他代码是,它启动了一个单独的Excel实例,与您所在的实例不同

我见过一些C++代码,它创建了一个实例:IDISPosiv/Cudio>,然后将一些东西传递给IDISPosik对象的方法,但不知道多少C++。


有什么想法吗?

我对Office不太了解,但我想你应该使用COM/ActiveX。然后你也会得到你的IDispatch。请参见

Delphi附带了一组ActiveX控件,可以完全访问Excel和其他Office应用程序。它们应该位于工具选项板的“服务器”选项卡上

如果没有,则选择Components | Install Packages(组件|安装软件包),并向下滚动列表,直到最后,然后选择正确的软件包

在默认安装中,应将其称为:

Microsoft Office示例自动化服务器包装组件

XP和Win2k应该有一个。XP版本适用于Vista

现在,如果您想自动化Excel


如果您只想通过使用Delphi向Excel添加功能,我建议使用COM对象,因为我怀疑Excel非常接受COM对象。否则,您可以创建一个直接DLL,并使用与Excel使用任何其他DLL相同的方法。

您描述的内容称为编写COM加载项。您需要创建一个自动化DLL并实现该接口。然后,您将收到Excel
应用程序
界面,作为
OnConnection
方法的参数

您还需要将DLL作为加载项加载,以便Excel将自动加载它

编辑:忘了提及:您可能想看看。他们的框架和组件使得开始创建Office插件非常容易。您肯定不必为
IDTExtensibility2
的细节操心。不过,所有这些都有一个(合理的)价格标签