【发布时间】:2011-11-11 00:53:05
【问题描述】:
我正在用 Delphi 2006 编写 MS Excel COM-Addin。我的开发机器上安装了 Excel 2007。
我将项目作为 ActiveX 库启动,然后从 Delphi ActiveX 项目菜单中添加了一个自动化对象。
在我的自动化对象中,我将 IDTExtensibility2 接口定义为
IDTExtensibility2 = interface(IDispatch)
['{32E456FC-C710-43AA-9ACA-DDE8F132B91B}']
function OnAddinsUpdate(var w_Custom: OleVariant): HResult; stdcall;
function OnBeginShutDown(var w_Custom: OleVariant): HResult; stdcall;
function OnConnection(const w_Application: IDispatch; w_ConnectMode: Integer;
const w_AddInInst: IDispatch; var w_Custom: OleVariant): HResult; stdcall;
function OnDisconnection(w_DisconnectMode: Integer; var w_Custom: OleVariant): HResult; stdcall;
function OnStartupComplete(var w_Custom: OleVariant): HResult; stdcall;
end;
并在派生自 TAutoObject 的类中实现接口。
在我调用的单元的初始化部分
TAutoObjectFactory.Create(ComServer, TPBSExcelAddin, Class_PBSExcelAddin, ciSingleInstance, tmApartment);
com 对象注册良好并显示在 Excel 插件选项中,但它将安装在 excel 中。我只是收到错误“未加载。加载 COM 插件期间发生错误”
谁能看到我的界面有问题?还是我创建 com 对象的方式?有没有办法调试这个?
谢谢
【问题讨论】:
-
我在不久前尝试过这样做。很难做到正确。最终我发现了我无法高度推荐的 Add-in Express。
-
谢谢大卫。我曾考虑过 Add-in Express,但我宁愿自己从头开始学习。