无法引用Microsoft.Office.Interop.Excel的解决

摘要:
有关PIA和互操作程序集及其使用的信息,请参阅PrimaryInterop程序集和APrimertoOfficeXPPrimaryIntertop程序集。返回顶部以获取Office2003PIA下表列出了Office2003可用的PIA。表1列出了具有相同版本号并使用相同密钥签名的Microsoft Office 2003应用程序和组件类型库。表3列出了Microsoft Visual Studio提供的PIA。NET 2003,并包含在Office 2003系列产品中。Office2003应用程序或组件主互操作程序集名称主互操作组件命名空间MicrosoftAccess11.0ObjectLibraryMicrosoft.Office.interop.Access.dllMicrosoft.Office.Iinterop.AccessMicrosoftExcel11.0ObjectLibrryMicrosoft.Office.IInterop.Excel.dlMicrosoft.Office.Iterop.Excel MicrosoftForms2.0ObjectLibraryMicrosoft.VisualVbe.interop.Forms.dllMmicrosoft.Vbe.Interop.FormsMicrosoftFrontPage6.0PageObjectReferenceLibraryMicrosoft.Office.Interop.FrontPageEditor.dllMicrosoft.Office.Iinterop.FrontPageEditorMicrosoftFrontPage6.0WebObjectReferenceLibrary Microsoft.Office.IInterop.FrontPage.dllMicrosoft.Office.Interop.FrontPageMicrosoftGraph11.0ObjectLibraryMicrosoft.Office.Iinterop.Graph.dellMicrosoft.Office.Iterop.GraphMicrosoftInfoPath1.0TypeLibraryMicrosoft.Office.Interop.InfoPath.dllMicrosoft.Office.Interop.InfoPathMicrosoftOffice11.0ObjectLibraryOffice.dllMicrosoft.Office.CoreMicrosoftOfficeOutlookViewControlMicrosoft.Office.Interop.OutlookViewCtl.dllMicrosoft.Office.Iinterop.OutLookViewCtlMicrosoftOfficeWebComponents1.0Microsoft.Office.IInterop.Owc11.dllMicrosoft.Office.Interop.Owc11MicrosoftOutlook11.0ObjectLibrary Microsoft.Office.Internation.Outlook.dllMicrosoft.Office.Interop_OutlookMicrosoftPowerPoint11.0ObjectLibraryMicrosoft.Office.Interop.PowerPoint.dllMicrosoft.Office.Iinterop.PowerSPointMicrosoftProject11.0ObjectLibrryMicrosoft.Office.IInterop.MSProject.dllMicrosoft.Office.Interop.MSPProjectMicrosoftPublisher11.0ObjectLibrary Microsoft.Office.Iterop.Publisher.dllMicrosoft.Office.Internation.PublisherMicrosoftSmartTag2.0TypeLibraryMicrosoft.Office.Iinterop.SmartTag.dllMicrosoft.Service.InteRop.MartTagMicrosoftVisio11.0TypeLibraryMicrosoft.Office.Interop.Visio.dllMicrosoft.Office.Iinterop.VisioMicrosoftVisualBasic6.0扩展性Microsoft.Vbe.Interop.dllMicrosoft.Vbe.InteropMicrosoftWord11.0ObjectLibraryMicrosoft.Office.Interop.Word.dllMicro soft.Office.Interop.Word对象库主Interop程序集名称版本号公钥标记MicrosoftDAO3.6ObjectLibraryDao.dll.4504.031bf3856ad64e35Microsoft SoftWindowsCommonControls6.0Mscomctl.dll10.0.4504.031bf3856 ad64e35对象库主互操作程序集名称版本号公钥标记MicrosoftActiveXDataObjects2.52.8LibraryAdodb.dll.7.0.3300.0b03f5f7f11d50a3aMicrosoftDataSourceInterfaceMsdatarc.dll7.0.3300.0 b03f5 f7f11d 50a3aOLEAutomationStdole.dll.7.0-3300.0b05f7f1 1d50a3a在安装Office 2003之前,请在安装时获取Office2003PIA。NET Framework 1.1若要在安装Microsoft Office 2003时获取OfficePIA,必须首先安装Microsoft。NET Framework 1.1版。

下载

在 Microsoft Office 2003 中,您可以通过使用主 interop 程序集 (PIA) 来使用由 Office 应用程序公开的 COM 对象。在本文中,将对如何获取、安装以及引用 PIA 进行阐释。

有关 PIA 和 interop 程序集以及如何根据由 Office 2003 公开的接口和类来以托管代码进行编程的详细信息,您可以从许多关于该主题的文章中找到。有关 PIA 和 interop 程序集及其使用的信息,请参阅 Primary Interop Assemblies (PIAs) 和 A Primer to the Office XP Primary Interop Assemblies

请参阅其他资源获取文章列表,这些文章提供了有关由 Office 向托管代码公开的类和接口的详细信息。

获取 Office 2003 PIA

以下表格列出了可用于 Office 2003 的 PIA。表 1 列出了具有相同版本号以及用相同密钥签署的 Microsoft Office 2003 应用程序和组件类型库。这些应用程序的版本号是 11.0.0.0,公钥标记为 71e9bce111e9429c。

表 2 列出了具有的版本号以及签署的密钥与表 1 所列不同的 Office 2003 应用程序和组件类型库。

表 3 列出了由 Microsoft Visual Studio .NET 2003 提供并包含在 Office 2003 系列产品中的 PIA。

Office 2003 应用程序或组件

主 Interop 程序集名

主 Interop 程序集命名空间

Microsoft Access 11.0 Object Library

Microsoft.Office.Interop.Access.dll

Microsoft.Office.Interop.Access

Microsoft Excel 11.0 Object Library

Microsoft.Office.Interop.Excel.dll

Microsoft.Office.Interop.Excel

Microsoft Forms 2.0 Object Library

Microsoft.Vbe.Interop.Forms.dll

Microsoft.Vbe.Interop.Forms

Microsoft FrontPage 6.0 Page Object Reference Library

Microsoft.Office.Interop.FrontPageEditor.dll

Microsoft.Office.Interop.FrontPageEditor

Microsoft FrontPage 6.0 Web Object Reference Library

Microsoft.Office.Interop.FrontPage.dll

Microsoft.Office.Interop.FrontPage

Microsoft Graph 11.0 Object Library

Microsoft.Office.Interop.Graph.dll

Microsoft.Office.Interop.Graph

Microsoft InfoPath 1.0 Type Library

Microsoft.Office.Interop.InfoPath.dll

Microsoft.Office.Interop.InfoPath

Microsoft Office 11.0 Object Library

Office.dll

Microsoft.Office.Core

Microsoft Office Outlook View Control

Microsoft.Office.Interop.OutlookViewCtl.dll

Microsoft.Office.Interop.OutlookViewCtl

Microsoft Office Web Components 11.0

Microsoft.Office.Interop.Owc11.dll

Microsoft.Office.Interop.Owc11

Microsoft Outlook 11.0 Object Library

Microsoft.Office.Interop.Outlook.dll

Microsoft.Office.Interop.Outlook

Microsoft PowerPoint 11.0 Object Library

Microsoft.Office.Interop.PowerPoint.dll

Microsoft.Office.Interop.PowerPoint

Microsoft Project 11.0 Object Library

Microsoft.Office.Interop.MSProject.dll

Microsoft.Office.Interop.MSProject

Microsoft Publisher 11.0 Object Library

Microsoft.Office.Interop.Publisher.dll

Microsoft.Office.Interop.Publisher

Microsoft SmartTag 2.0 Type Library

Microsoft.Office.Interop.SmartTag.dll

Microsoft.Office.Interop.SmartTag

Microsoft Visio 11.0 Type Library

Microsoft.Office.Interop.Visio.dll

Microsoft.Office.Interop.Visio

Microsoft Visual Basic 6.0 Extensibility

Microsoft.Vbe.Interop.dll

Microsoft.Vbe.Interop

Microsoft Word 11.0 Object Library

Microsoft.Office.Interop.Word.dll

Microsoft.Office.Interop.Word

对象库

主 Interop 程序集名

版本号

公钥标记

Microsoft DAO 3.6 Object Library

Dao.dll

10.0.4504.0

31bf3856ad364e35

Microsoft Windows Common Controls 6.0

Mscomctl.dll

10.0.4504.0

31bf3856ad364e35

对象库

主 Interop 程序集名

版本号

公钥标记

Microsoft ActiveX Data Objects 2.5â 2.8 Library

Adodb.dll

7.0.3300.0

b03f5f7f11d50a3a

Microsoft Data Source Interfaces

Msdatasrc.dll

7.0.3300.0

b03f5f7f11d50a3a

OLE Automation

Stdole.dll

7.0.3300.0

b03f5f7f11d50a3a

安装 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 所示。

无法引用Microsoft.Office.Interop.Excel的解决第2张

图 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 安装

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

    无法引用Microsoft.Office.Interop.Excel的解决第3张

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

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

    无法引用Microsoft.Office.Interop.Excel的解决第4张

    图 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 功能。

  4. 单击 Update

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

    要安装 Smart Tag .NET Programmability SupportMicrosoft 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

    无法引用Microsoft.Office.Interop.Excel的解决第5张

    图 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 未被安装。

无法引用Microsoft.Office.Interop.Excel的解决第7张

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

使用 Office 2003 PIA

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

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

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

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

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

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

  4. 单击 COM 选项卡。

    无法引用Microsoft.Office.Interop.Excel的解决第9张

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

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

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

    无法引用Microsoft.Office.Interop.Excel的解决第10张

    图 7. 添加至 References 的 Microsoft.Office.Core PIA

如果突出显示 Microsoft.Office.Core 引用并在 Properties 窗口中查看其属性,则 Copy Local 属性应被设置为 FalsePath 属性应指向其在全局程序集缓存中的位置,并应包括其版本号: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。

免责声明:文章转载自《无法引用Microsoft.Office.Interop.Excel的解决》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Celery学习--- Celery在项目中的使用FCL研究-集合- System.Collections 接口和对象集合下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章