https://msdn.microsoft.com/zh-cn/library/ee342218(v=vs.110).aspx

PIA的全称是 primary interop assembly  主互操作程序集

http://www.cnblogs.com/pnljs/archive/2012/02/20/2359313.html

安装 Excel 外接应用程序

  1. 启动 Visual Studio。

  2. 在“文件”菜单上指向“新建”,再单击“项目”。

  3. 在“已安装的模板”窗格中,展开“Visual Basic”或“Visual C#”,展开“Office”,然后单击“2010”(如果使用的是 Office 2007,则单击“2007”)。

  4. 在“模板”窗格中,单击“Excel 2010 外接程序”(或“Excel 2007 外接程序”)。

  5. 查看“模板”窗格的顶部,确保“.NET Framework 4”显示在“目标框架”框中。

  6. 如果需要,在“名称”框中键入项目的名称。

  7. 单击“确定”。

  8. 新项目出现在“解决方案资源管理器”中。

添加引用

  1. 在“解决方案资源管理器”中,右击项目的名称,然后单击“添加引用”。 将显示“添加引用”对话框。

  2. 在“.NET”选项卡上的“组件名称”列表中选择“Microsoft.Office.Interop.Excel”14.0.0.0 版(对于 Excel 2007,则为 12.0.0.0 版),然后按住 Ctrl 键并选择“Microsoft.Office.Interop.Word”14.0.0.0 版(对于 Word 2007,则为 12.0.0.0 版)。

  3. 单击“确定”。

添加必要的 Imports 语句或 using 指令

  1. 在“解决方案资源管理器”中,右击“ThisAddIn.vb”或“ThisAddIn.cs”文件,然后单击“查看代码”。

将以下 Imports 语句 (Visual Basic) 或 using 指令 (C#) 添加到代码文件的顶部(如果这些语句尚不存在)。

using System.Collections.Generic;
using Excel = Microsoft.Office.Interop.Excel;
using Word = Microsoft.Office.Interop.Word;

清理完成的项目

  • 在 Visual Studio 中,单击“生成”菜单上的“清理解决方案”。 否则,每次在计算机上打开 Excel 时,外接程序都将运行。

查找 PIA 引用

  1. 重新运行应用程序,但是不要单击“清理解决方案”。

  2. 在“开始”菜单上,单击“所有程序”。 然后依次单击“Microsoft Visual Studio 2010”、“Visual Studio 工具”、“Visual Studio 命令提示(2010)”。

  3. 在“Visual Studio 命令提示(2010)”窗口中键入 ildasm,然后按 Enter。 此时将出现“IL DASM”窗口。

  4. 在 IL DASM 窗口中的“文件”菜单上,单击“打开”。 双击“Visual Studio 2010”,然后双击“项目”。 打开项目的文件夹,并查找 您的项目名称.dll 的 bin/Debug 文件夹。 双击 您的项目名称.dll。 一个新窗口将显示项目的特性,以及对其他模块和程序集的引用。 请注意,程序集中包括了命名空间 Microsoft.Office.Interop.Excel 和 Microsoft.Office.Interop.Word。 在 Visual Studio 2010 中,默认情况下编译器会将所需的类型从引用的 PIA 导入程序集中。

    有关更多信息,请参见如何:查看程序集内容

  5. 双击“清单”图标。 此时将出现一个包含程序集列表的窗口,这些程序集包含项目所引用的项。 列表中未包括 Microsoft.Office.Interop.Excel 和 Microsoft.Office.Interop.Word。 由于项目所需的类型已导入到程序集中,因此无需引用 PIA。 这样,部署会更加轻松。 PIA 不必位于用户的计算机上,并且,由于应用程序不需要部署特定版本的 PIA,因此可将应用程序设计为与多个版本的 Office 一起使用,只要所有版本中都有必要的 API 即可。

    由于不再必须要部署 PIA,因此,您可以在高级方案中创建与多个版本的 Office(包括早期版本)一起使用的应用程序。 但是,只有当您的代码未使用您所使用的 Office 版本中未提供的任何 API 时,此情况才适用。 由于不能总是清楚地了解特定 API 在早期版本是否可用,因此出于该原因,建议不要使用 Office 的早期版本。

演练:Office 编程(C# 和 Visual Basic)的更多相关文章

  1. 使用 Async 和 Await 的异步编程(C# 和 Visual Basic)[msdn.microsoft.com]

    看到Microsoft官方一篇关于异步编程的文章,感觉挺好,不敢独享,分享给大家. 原文地址:https://msdn.microsoft.com/zh-cn/library/hh191443.asp ...

  2. [引]MSDN Visual Basic 和 C# 中都会用到的编程概念

    本文转自:http://msdn.microsoft.com/zh-cn/library/dd460655.aspx 本节介绍 Visual Basic 和 C# 中都会用到的编程概念. 本节内容   ...

  3. Visual Basic 2012 借助DataGridView控件将SQL server2012 数据导入到Excel 2010

    摘  要: SQL Server 2012 数据和Excel 2010之间的连接和数据的传输,本篇文章主要针对的是SQL Server 2012 数据导入到Excel 2010文件中.Excel软件对 ...

  4. Visual Basic了解

    Visual Basic是一种由微软公司开发的结构化的.模块化的.面向对象的.包含协助开发环境的事件驱动为机制的可视化程序设计语言.这是一种可用于微软自家产品开发的语言.它源自于Basic编程语言.V ...

  5. 杂项-软件: VBA(Visual Basic for Applications)

    ylbtech-杂项-软件: VBA(Visual Basic for Applications) VBA (Visual Basic宏语言) Visual Basic for Application ...

  6. Visual Basic相关图书推荐

    Visual Basic从入门到精通(第2版) 作      者 国家863中部软件孵化器 编 出 版 社 人民邮电出版社 出版时间 2015-03-01 版      次 2 页      数 61 ...

  7. office编程必不可少

    原文:office编程必不可少 [转] 1. 微软官方实例: 段落.表格.图表 HOW TO:利用 Visual C# .NET 使 Word 自动新建文档 2. 学习资源 (1)Word in th ...

  8. 如何:使用 Visual Basic 编写基于 Unity3D 的计算器

    随着 .NET 全平台战略的推进,微软正在让以 C# 为先锋的 .NET 拥有跨平台特性.这个过程中一直有人想知道其它 .NET 语言对跨平台的支持有什么改进,熟悉 C# 但是喜欢用 VB 的我也不例 ...

  9. Visual Basic 2017 操作Excel和word【1】持续更新……

    我坚持在VB的路上走到黑…………  清单1.1  从应用程序对象导航到Excel中的工作表  Dim myWorkbooks As Excel.Workbooks = app.Workbooks ) ...

随机推荐

  1. 【C#】线程池

    将方法排入队列以便执行,并指定包含该方法所用数据的对象.此方法在有线程池线程变得可用时执行. class Program { static void Main(string[] args) { str ...

  2. java 简单搜索算法

    --无序查找 public static int Search(int[] a,int key){ for(int i=0;i<a.length;i++){ if(key==a[i]){ ret ...

  3. google api , the problem of null refresh token

    http://stackoverflow.com/questions/10827920/google-oauth-refresh-token-is-not-being-received The ref ...

  4. Cookie 获取

    二级域名可以获取一级域名的Cookie值 二级域名下删除顶级域名下的Cookie,需要添加顶级域名的Cookie作用域 /// <summary> /// 根据cookie名称删除 /// ...

  5. AvalonDock 2.0+Caliburn.Micro+MahApps.Metro实现Metro风格插件式系统(二)

    上次已经建立了可运行的基本框架,这篇就说说怎么把我们自定义的View自动加载并添加到AvalonDock里面,AvalonDock里有3种类型的UI部件,Document, DockableConte ...

  6. 在eclipse里的 flex 没有可视化的编辑

      注:在4.7版本里去掉了可视化编辑器.   转自:http://3470973.blog.51cto.com/3460973/1135328 最近eclipse切换了一个工作空间,创建的flex项 ...

  7. c数组与指针

    0.数组和指针并不是相同的 我们声明数组时,同时分配了一些内存空间,用于容纳数组元素,但是当我们声明一个指针时,只分配了用于容纳指针本身的内存空间. 从这个方面也可以理解sizeof后面跟数组名和指针 ...

  8. C# XML - XmlNode and XmlAttribute

    public static string TestXML(string path) { XmlDocument doc = new XmlDocument(); doc.Load(path); Xml ...

  9. 1066: [SCOI2007]蜥蜴 - BZOJ

    Description 在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外. 每行每列中相邻石柱的距离为1,蜥蜴的跳跃距离是d,即蜥蜴可以跳到平 ...

  10. java 正则匹配空格字符串 正则表达式截取字符串

    java 正则匹配空格字符串 正则表达式截取字符串 需求:从一堆sql中取出某些特定字符串: 比如配置的sql语句为:"company_code = @cc and project_id = ...