未能添加对"Microsoft EXCEL 11.0 Object Library"的引用

时间:2021-02-01 17:09:38

出错原因:Office 2003 主 Interop 程序集未安装


安装 Office 2003 之前,在安装 .NET Framework 1.1 时获取 Office 2003 PIA
要在安装 Microsoft Office 2003 时获取 Office PIA,您必须首先安装 Microsoft .NET Framework 版本 1.1。如果在安装 Office 2003 之前未安装 .NET Framework 1.1,则 PIA 不会随 Office 2003 安装进行安装。

如果在安装了 Office 2003 之后安装 .NET Framework 1.1,则仍然可以通过遵循安装 Office 2003 之后,在安装 .NET Framework 1.1 时获取 Office 2003 PIA中概述的步骤来安装 PIA。

如果在安装 Office 2003 之前没有安装 .NET Framework 1.1,则安装 PIA 的选项不会显示在 Office 的自定义安装中。如果首先安装 .NET Framework 1.1,您会在自定义安装中看见选项列表中的 .NET Programmability Support 可用,如图 1 所示。

 

图 1. Office 2003 安装中的 .NET Programmability Support 选项
安装 Office 2003 之后,在安装 .NET Framework 1.1 时获取 Office 2003 PIA
如果在安装 Microsoft Office 2003 之后安装 Microsoft .NET Framework 版本 1.1,则要获取 PIA,您必须修改您的 Office 安装

要修改 Office 2003 安装

在 Microsoft Office 2003 Setup 对话框的 Maintenance Mode Options 屏幕中,选择 Add or Remove Features,如图 2 所示,单击 Next。

 

图 2. 修改 Office 2003 安装程序
选择 Choose advanced customization of applications 复选框并单击 Next。

展开特定于应用程序的节点。例如,要获取 Microsoft Office Excel 2003 PIA,请展开 Microsoft Office Excel 节点并选择 .NET Programmability Support。单击 .NET Programmability Support 旁边的下拉箭头以选择更新选项,并选取 Run from My Computer,如图 3 所示。请勿选择 Installed on First Use。

 

图 3. 选择 .NET Programmability Support 的更新选项
注 选择 Run from My Computer 意味着您希望将当前选定功能(例如 .NET Programmability Support)安装并存储在硬盘上。选择 Run all from My Computer 意味着您希望将当前选定功能及其所有子功能都安装并存储在硬盘上。.NET Programmability Support 功能没有子功能,因此无论选择 Run from My Computer 还是 Run all from My Computer,都会得到相同的结果。选择 Installed on First Use 意味着您只希望在首次使用 .NET Programmability Support 功能时,将其安装在硬盘上。在这种情形中,您或许需要用访问用于安装 Office 2003 的光盘或网络服务器,以安装 .NET Programmability Support 功能。

单击 Update。

要安装其他特定于 Office 2003 应用程序的 PIA,请展开应用程序节点并选择 .NET Programmability Support。

要安装 Smart Tag .NET Programmability Support、Microsoft Forms 2.0 .NET Programmability Support 或 Microsoft Graph .NET Programmability Support,请展开 Office Tools 节点,并选择适当的 .NET Programmability Support,如图 4 所示。如果是在开发计算机上进行安装,请再次确保选择了 Run from My Computer 。请勿选择 Installed on First Use。

 

图 4. Office Tools 节点 .NET Programmability Support 选项
 返回页首

安装 Office 2003 PIA
通过 Office 2003 的 “ 典型安装”来安装 PIA

如果已具备 Microsoft .NET Framework 版本 1.1,则默认情况下,Microsoft Office 2003 的典型安装会安装以下五个 PIA:

Stdole.dll

Adodb.dll

Msdatasrc.dll

Microsoft.Vbe.Interop.dll

Office.dll

如果具备了 Microsoft Access 或 Microsoft Office Web Components 2003,则默认情况下,还安装有 Mscomctl.dll PIA。

通过 Office 2003 的“完全安装”来安装 PIA

如果采用完全安装而不是典型安装,则安装 Microsoft Office 2003 时,PIA 会自动安装到全局程序集缓存中。如果要在开发计算机上安装 PIA,应采用完全安装。对于典型安装,可根据需要来安装 PIA。

注 在开发计算机上,如果需要 PIA,则不应采用 Office 2003 的典型安装。这是存在于 Microsoft Visual Studio .NET 和 Microsoft Visual Studio .NET 2003 中的一个问题,该问题会导致创建一个 Visual Studio£¬即在引用其 PIA 被设置为按需安装的 COM 对象时,会生成 interop 程序集。要避免这个问题,请确保在开始任何开发工作之前,希望引用的 Office 2003 PIA 安装在全局程序集缓存中。对于不会用于开发工作的计算机,对 Office 2003 进行典型安装是完全可以的。自定义 Office 的安装步骤安装 Office 2003 之后,在安装 .NET Framework 1.1 时获取 Office 2003 PIA 中所述相同。

查找 Office 2003 PIA 安装位置

Microsoft Office 2003 主 Interop 程序集 (PIA) 安装在 drive:/WINDOWS/assembly 或 drive:/WINNT/assembly 中的全局程序集缓存中。

例如,如果 Microsoft Office Excel 2003 PIA 安装在全局程序集缓存中,您会在全局程序集缓存中看到该全局程序集名 Microsoft.Office.Interop.Excel,版本为 11.0.0.0,公钥标记为 71e9bce111e9429c,如图 5 所示。如果您看不到这些信息,那么该 Excel PIA 未被安装。

 

图 5. 安装在全局程序集缓存中的 Office 2003 PIA
 返回页首

使用 Office 2003 PIA
引用 Office 2003 托管代码 — 类型 PIA

可以通过使用以下过程来引用一个或多个 Office 2003 PIA。

要引用 Office 2003 托管代码 鈥 类型 PIA

打开 Microsoft Visual Studio .NET 或 Microsoft Visual Studio .NET 2003 中的托管代码解决方案 (.sln) 文件。

在 Solution Explorer 窗口中,展开 References 节点。

右键单击 References, Add References 以打开 Add reference 对话框,如图 6 所示。

单击 COM 选项卡。

 

图 6. COM 选项卡处于选中状态的 Add Reference 对话框
在 Component Name 列表中,下滚至需要引用的对象类型库。例如,图 6 中,选定了 Microsoft Office 11.0 Object Library。

突出显示该组件并单击 Select。您会看到它出现在该选项卡底部的 Selected Components 列表框中。

单击 OK。您将看到 Microsoft.Office.Core 已添加至 Solution Explorer 中的 References 节点, 如图 7 所示。

 

图 7. 添加至 References 的 Microsoft.Office.Core PIA
如果突出显示 Microsoft.Office.Core 引用并在 Properties 窗口中查看其属性,则 Copy Local 属性应被设置为 False。Path 属性应指向其在全局程序集缓存中的位置,并应包括其版本号:11.0.0.0。在 Microsoft Windows XP 操作系统中,它看起来类似于如下所示:

C:/WINDOWS/assembly/GAC/office/11.0.0.0  71e9bce111e9429c/office.dll
要向其他 Office 2003 类型库添加引用,请重复步骤 3 到步骤 7。在步骤 5 中,选择希望引用的应用程序或组件对象类型库。

验证对 Office 2003 PIA 的引用

要知道是否正确地引用了 PIA,请确保该 PIA 的 Copy Local 属性被设置为 False。在 Windows XP 操作系统中,例如,如果要引用 Microsoft Office 2003 Smart Tag PIA,则 Path 属性应当如下显示:

C:/WINDOWS/assembly/GAC/Microsoft.Office.Interop.SmartTag/
    11.0.0.0  71e9bce111e9429c/Microsoft.Office.Interop.SmartTag.dll
如果 Properties 窗口中的 Copy Local 属性被设置为 True,那么您的解决方案引用的不是智能标记 PIA,而是 interop 程序集。因为最佳实践使用正式的 PIA,所以您应当移除 interop 程序集并再次引用 PIA。要移除某个 interop 程序集,请在 References 节点中,右键单击该 interop 程序集名并单击 Remove。

注 仅当您选择了 Run from My Computer 而不是 Installed on First Use 作为该 PIA 的更新选项或对 Office 2003进行了完全安装时,移除 interop 程序集并再次引用 PIA才会奏效。有关此注意事项的详细信息,请参阅安装 Office 2003 之后,在安装 .NET Framework 1.1 时获取 Office 2003 PIA。

如果您知道在全局程序集缓存中有 Office 2003 PIA£¬但不知何故您不停地需要某个 interop 程序集而不是 PIA,这可能意味着某些类型库注册已损坏了该特定 PIA 注册。要修复 PIA 注册问题,请参阅 PIA 与 Interop 程序集之间的差异。

PIA 和 Interop 程序集之间的差异

如果您可以在全局程序集缓存中看到 Microsoft Office 2003 PIA£¬但不知何故,在您引用 Office 应用程序或组件对象类型库时不停地需要某个 interop 程序集而不是 PIA,这可能意味着某些其他类型库注册已损坏了该特定 PIA 注册。要修复该 PIA 注册,可以采用以下任意一个步骤:

注 您在尝试使用以下各选项之前,应当从 Microsoft Office 下载来安装 Microsoft Office 2003 Service Pack 1。

执行 Office 修复。

重新安装受影响的 PIA。要进行此操作,请重新运行 Office安装(请参阅安装 Office 2003 之后,在安装 .NET Framework 1.1 时获取 Office 2003 PIA)。

从全局程序集缓存中,在受影响的 PIA 上运行 RegAsm 工具以对其重新进行注册。例如,在 Office PIA(该 Office PIA 命名空间是 Microsoft.Office.Core)上运行 RegAsm,如下所示:

%systemroot%/Microsoft.NET/Framework/v1.1.4322/RegAsm.exe
%systemroot%/assembly/GAC/Office/11.0.0.0  71e9bce111e9429c/
    Office.dll
要在 VBIDE PIA(该 VBIDE PIA 命名空间是 Microsoft.Vbe.Interop)上运行 RegAsm:

%systemroot%/Microsoft.NET/Framework/v1.1.4322/RegAsm.exe
%systemroot%/assembly/GAC/Microsoft.Vbe.Interop/
    11.0.0.0  71e9bce111e9429c/Microsoft.Vbe.Interop.dll
要在 Microsoft Office Excel 2003 PIA(该 Excel PIA 命名空间是 Microsoft.Office.Interop.Excel)上运行 RegAsm:

%systemroot%/Microsoft.NET/Framework/v1.1.4322/RegAsm.exe
%systemroot%/assembly/GAC/Microsoft.Office.Interop.Excel/
    11.0.0.0  71e9bce111e9429c/ Microsoft.Office.Interop.Excel.dll
要在 Microsoft Office 2003 Smart Tag PIA(该 Smart Tag PIA 命名空间是 Microsoft.Office.Interop.SmartTag)上运行 RegAsm:

%systemroot%/Microsoft.NET/Framework/v1.1.4322/RegAsm.exe
%systemroot%/assembly/GAC/Microsoft.Office.Interop.SmartTag/
    11.0.0.0  71e9bce111e9429c/Microsoft.Office.Interop.SmartTag.dll
避免重新发布 Office 2003 PIAs

不应用解决方案安装程序包尝试以任何方式重新发布 Microsoft Office 2003 PIA,Office 2003 应当是唯一的 Office 2003 PIA 提供机制。可以通过完全、典型或自定义安装将 Office 2003 PIA 自动安装至全局程序集缓存或根据需要安装在最终用户计算机上。

请确保不要在安装程序中包含 PIA¡£在安装项目中包含 Office 2003 PIA 可能会损坏最终用户计算机上 Office 2003 所有权和 PIA 组件的注册。这会导致在卸载期间,无意间将它们从最终用户计算机上删除。

例如,当用户安装安装程序包时,打包在安装程序中的 Office 2003 PIA 会改写之前安装的组件的注册。当用户卸载其解决方案时,那些 PIA 注册可能会被损坏,从而使得最终用户计算机不支持这些组件的 .NET 可编程能力。

注 Microsoft Visual Studio .NET 和 Microsoft Visual Studio .NET 2003 安装项目通常自动在安装程序包中包含一些 PIA。您必须确保最终用户计算机上的安装程序包不包含 Office 2003 PIA。

避免重新发布 Stdole.dll、Adodb.dll 以及 Msdatasrc.dll PIA

与 Microsoft Office XP 不同,Stdole.dll、Adodb.dll 以及 Msdatasrc.dll PIA 包含在 Microsoft Office 2003 中,如表 3 所示。与对待所有 Office 2003 PIA 一样,不应将其重新发布。有关为何不应重新发布包含在 Office 2003 中的 PIA 的详细信息,请参阅避免重新发布 Office 2003 PIA。

使用 Office XP PIA 和 Office 2003 PIA

PIA 特定于版本,因此应当使用版本与应用程序版本相同的 PIA。例如,如果您希望将自己的 Microsoft Office XP 托管代码解决方案迁移到 Microsoft Office 2003,那么您应当通过 Office 2003 PIA 重新编译该 Office XP 托管代码解决方案。

如果您打算在 Office XP 和 Office 2003 中使用同一个解决方案,那么还应当具备两个不同的安装程序包,一个用于 Office XP,另一个用于 Office 2003¡£Office XP 的 PIA 部署与 Office 2003 的完全不同。有关这些差异的详细信息,请参阅 Office XP PIA 下载中包含的 ReadMe 文件。正如避免重新发布 Office 2003 PIA 中所强调的那样,不应尝试那些意在重新部署 Office 2003 PIA 的解决方案部署方案。如果您的解决方案依赖于 Office 2003 PIA,则它应当使用 Office 2003 来提供 PIA。

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xiaokuang513204/archive/2009/10/09/4644710.aspx