zoukankan      html  css  js  c++  java
  • 无法引用Microsoft.Office.Interop.Excel的解决

    下载

    在 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 所示。

    图 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

      图 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

      图 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

      图 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

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

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

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

    4. 单击 COM 选项卡。

      图 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 所示。

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

  • 相关阅读:
    Jquery源码分析(一)
    Lazyload 延迟加载效果
    20100128
    Linux共享库(so)动态加载和升级
    shell 数组
    Git常用命令解说
    linux shell 数组建立及使用技巧
    linux下查看用户及用户组的方法
    Zypper 用法
    linux shell 数组的长度计算、修改、循环输出等操作
  • 原文地址:https://www.cnblogs.com/top5/p/1688546.html
Copyright © 2011-2022 走看看