使用 Microsoft 登录
登录或创建帐户。
你好,
使用其他帐户。
你有多个帐户
选择要登录的帐户。

摘要

除了组件对象模型 (COM) 加载项之外,Microsoft Office Excel 还支持自动化加载项。 本文介绍这两种类型的外接程序之间的差异。 

更多信息

COM 加载项

COM 加载项为开发人员提供了一种扩展 Office 应用程序功能以执行自定义任务的方法。 COM 加载项通常用于自动执行 Excel,以响应单击 CommandBar 按钮、窗体或对话框或 Excel 特定的其他事件,例如打开或关闭工作簿或在工作表上输入数据。 无法直接从工作表中的单元格公式调用 COM 外接程序函数。

COM 加载项是进程内 COM 服务器, (ActiveX DLL) ,必须实现 IDTExensibility2 接口。 所有 COM 加载项都必须实现此接口的五种方法:OnConnection、OnStartupComplete、OnAddinsUpdate、OnBeginShutDown 和 OnDisconnection。

在用户的系统上安装 COM 外接程序时,会为外接程序创建注册表项。 除了普通的 COM 注册之外,还会为其运行的每个 Office 应用程序注册 COM 外接程序。 Excel 使用的 COM 加载项在以下注册表项中注册:

            
HKEY_CURRENT_USER\Software\Microsoft\Office\Excel\Addins\ 

此密钥包含每个已安装 COM 外接程序的子项。 子项的名称是 COM 加载项的 ProgID。 COM 外接程序的子项还包含用于描述 COM 外接程序的友好名称、说明和加载行为的值。 加载行为描述如何在 Excel 中加载加载项:启动时加载、仅在下次启动时加载、按需加载或未加载。

还可以通过 Excel 用户界面加载和卸载 COM 加载项。 为此,请按照下列步骤操作:

  1. 在“视图”菜单上,指向“工具栏”,然后单击“自定义”。

  2. 在“工具栏”对话框中,单击“高级”选项卡。 在类别列表中,选择“工具”。 在命令列表中找到 COM 加载项,并将命令拖动到所选的菜单或 CommandBar。 关闭“工具栏”对话框。

  3. 单击添加的 COM 外接程序命令以显示“COM 加载项”对话框。 该对话框列出了系统上安装的所有 COM 加载项,并且选择了当前加载的 COM 加载项。

还可以通过 Excel 用户界面加载和卸载 COM 加载项。 为此,请按照下列步骤操作:

  1. 单击“Microsoft Office 按钮”,然后单击“Excel 选项”。

  2. 单击“加载项”。

  3. 在“ 管理”下,单击“ COM 加载项”,然后单击“ 转到 ”。

    “COM 加载项”对话框列出了计算机上安装的所有 COM 加载项。 选择当前加载的 COM 加载项。

有关详细信息,请参阅以下 Microsoft 网站:

Office 加载项平台概述

自动化加载项

除了 COM 加载项,Excel 还支持自动化加载项。 自动化外接程序基于 COM 加载项构建,自动化外接程序中的函数可从 Excel 工作表中的公式调用。 COM 加载项必须是支持 IDTExtensibility2 接口的进程内 COM 服务器;但是,自动化加载项可以是进程内或进程外 COM 服务器,IDTExtensibility2 的实现是可选的。

若要在 Excel 中使用自动化外接程序中的函数,请执行以下步骤:

  1. 在“工具”菜单上,单击“加载项”。

  2. 在“Add-Ins”对话框中,单击“自动化”。 从已注册的 COM 服务器列表中选择自动化外接程序,然后单击“确定”。

  3. “自动化加载项”将显示在“加载项”对话框中。 单击“确定”关闭“Add-Ins”对话框。

若要在 Excel 2007 及更新中使用自动化外接程序中的函数,请执行以下步骤:

  1. 单击“Microsoft Office 按钮”,然后单击“Excel 选项”。

  2. 单击“加载项”。

  3. “管理”下,单击“ Excel 加载项”,然后单击“ 转到”。

  4. 在“ 加载项 ”对话框中,单击“ 自动化”。 在已注册的 COM 服务器列表中,单击自动化外接程序,然后单击“ 确定”。

    “自动化加载项”将显示在“ 加载项 ”对话框中。 单击“ 确定 ”关闭“ 加载项 ”对话框。

当您在“Add-Ins”对话框中向列表添加内容时,或者在列表中选择并清除“加载项”时,Excel 会将所做的更改存储在注册表中。 首先,Excel 使用以下注册表设置来确定是否加载了外接程序列表中的自动化加载项:

 Excel 2002
Key:            HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Excel\Options
String:         OPENx
Sample Value:   /A "ServerName.ClassName"

 Excel 2003
Key:            HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel\Options
String:         OPENx
Sample Value:   /A "ServerName.ClassName"
Excel 2007
Key:            HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Options
String:         OPENx
Sample Value:   /A "ServerName.ClassName"

注意:根据所使用的版本更改 Office 版本号。


字符串值中使用的 /A 开关是 Excel 和更早版本的新增开关,专门用于加载自动化加载项。 所有自动化加载项都按需加载;没有任何设置可以更改自动化外接程序的加载行为。

清除“Add-Ins”对话框中列出的自动化加载项时,以下注册表项中将创建名称等于外接程序的 ProgID 的子项:



HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Excel\Add-in Manager Excel 2003:



HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel\Add-in Manager
HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel\Add-in Manager 此注册表设置可确保已添加到加载项列表的自动化加载项保留在列表中,即使你已选择不加载它们也是如此。

有关详细信息,请参阅以下 Microsoft 网站:

Office 加载项平台概述

实现 IDTExtensibility2 的自动化加载项

如前所述,自动化外接程序可以实现 IDTExtensibility2,但 Excel 无需从工作表调用外接程序中的函数。 如果要求自动化外接程序获取对 Excel 实例的引用,则可以实现 IDTExtensibility2 并使用 OnConnection 的 Application 参数自动执行 Excel。

实现的
自动化加载项 可以通过“COM Add-Ins”对话框和“Add-Ins”对话框在 Excel 用户界面中加载 IDTExtensibility2。 下面介绍了自动化外接程序的行为,具体取决于它是加载在这两个对话框中的一个还是两个对话框中:

  • 仅在“加载项”对话框中加载。

    加载项按需加载。 可以从工作表中的公式调用外接程序中的函数。

  • 仅在“COM 加载项”对话框中加载。

    加载项作为 COM 加载项加载,其加载行为根据注册表中的设置确定。 不能从工作表中的公式调用外接程序中的函数。

  • 在“COM 加载项”对话框和“加载项”对话框中加载。

    加载加载项的两个单独实例。 一个实例作为 COM 加载项加载,另一个实例作为自动化加载项加载。 COM 外接程序实例使用注册表中指示的加载行为;自动化外接程序实例按需加载。 这两个实例彼此独立工作,不共享全局变量。

由于自动化加载项是按需加载的,因此 Excel 可能会在外接程序处于单元格编辑模式时尝试加载加载项。 因此,在开发支持 IDTExtensibility2 的自动化外接程序时,应注意不要在加载外接程序时执行任何尝试更改 Excel 状态的事情。 有关更多信息,请参阅以下 Microsoft 知识库文章:

284876 BUG:加载

自动化 Add-In 时 Excel 失败 (c) Microsoft Corporation 2001,保留所有权利。 由 Microsoft Corporation Lori B. Turner 提供。
 

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。

此信息是否有帮助?

你对语言质量的满意程度如何?
哪些因素影响了你的体验?
按“提交”即表示你的反馈将用于改进 Microsoft 产品和服务。 你的 IT 管理员将能够收集此数据。 隐私声明。

谢谢您的反馈!

×