演练:为 Excel 创建第一个 VSTO 外接程序

本介绍性演练演示如何创建 Microsoft Office Excel 的应用程序级外接程序。 你在此类解决方案中创建的功能可用于应用程序本身,而与所打开的工作簿无关。

适用于: 本主题中的信息适用于 Excel 的 VSTO 外接程序项目。 有关详细信息,请参阅办公室应用程序和项目类型提供的功能。

注意

有兴趣开发跨多个平台扩展办公室体验的解决方案? 查看新的办公室外接程序模型。 与 VSTO 外接程序和解决方案相比,办公室外接程序的占用空间较小,可以使用几乎任何 Web 编程技术(如 HTML5、JavaScript、CSS3 和 XML)生成它们。

本演练阐释了以下任务:

  • 为 Excel 创建 Excel VSTO 外接程序项目。

  • 编写代码,使用 Excel 对象模型在保存工作簿时向工作簿中添加文本。

  • 生成并运行项目,以对其进行测试。

  • 清理已完成的项目,使 VSTO 外接程序在开发计算机上不再自动运行。

    注意

    以下说明中的某些 Visual Studio 用户界面元素在计算机上出现的名称或位置可能会不同。 这些元素取决于你所使用的 Visual Studio 版本和你所使用的设置。 有关详细信息,请参阅个性化设置 IDE

先决条件

你需要满足以下条件才能完成本演练:

创建项目

在 Visual Studio 中创建新的 Excel VSTO 外接程序项目

  1. 启动 Visual Studio。

  2. “文件” 菜单上,指向 “新建” ,然后单击 “项目”

  3. 在模板窗格中,展开 “Visual C#”“Visual Basic”,然后展开 “Office/SharePoint”

  4. 在展开的 “Office/SharePoint” 节点下方,选择 “Office 外接程序” 节点。

  5. 在项目模板列表中,选择 “Excel 2010 外接程序”“Excel 2013 外接程序”

  6. “名称” 框中,键入 FirstExcelAddIn

  7. 单击“确定”。

    Visual Studio 将创建 FirstExcelAddIn 项目,并在编辑器中打开 ThisAddIn 代码文件。

编写代码以向保存的工作簿添加文本

接下来,将代码添加到 ThisAddIn 代码文件。 新的代码使用 Excel 的对象模型将样本文本插入到活动工作表的第一行。 活动工作表是用户保存工作簿时处于打开状态的工作表。 默认情况下,ThisAddIn 代码文件包含以下生成的代码:

  • ThisAddIn 类的部分定义。 此类提供代码的入口点,并提供对 Excel 对象模型的访问权限。 有关详细信息,请参阅 程序 VSTO 外接程序。该 ThisAddIn 类的其余部分在不应修改的隐藏代码文件中定义。

  • ThisAddIn_StartupThisAddIn_Shutdown 事件处理程序。 Excel 加载和卸载 VSTO 外接程序时会调用这些事件处理程序。 使用这些事件处理程序,可在加载 VSTO 外接程序对其进行初始化,并在卸载时清理外接程序所使用的资源。 有关详细信息,请参阅办公室项目中的事件。

向保存的工作簿中添加一行文本

  1. 在 ThisAddIn 代码文件中,将下面的代码添加到 ThisAddIn 类中。 新的代码定义 WorkbookBeforeSave 事件的事件处理程序,该事件在保存工作簿时引发。

    用户保存工作簿时,该事件处理程序会将新文本添加到活动工作簿的开头。

    void Application_WorkbookBeforeSave(Microsoft.Office.Interop.Excel.Workbook Wb, bool SaveAsUI, ref bool Cancel)
    {
        Excel.Worksheet activeWorksheet = ((Excel.Worksheet)Application.ActiveSheet);
        Excel.Range firstRow = activeWorksheet.get_Range("A1");
        firstRow.EntireRow.Insert(Excel.XlInsertShiftDirection.xlShiftDown);
        Excel.Range newFirstRow = activeWorksheet.get_Range("A1");
        newFirstRow.Value2 = "This text was added by using code";
    }
    
  2. 如果你使用的是 C#,请将以下必需代码添加到 ThisAddIn_Startup 事件处理程序中。 此代码用于将 Application_WorkbookBeforeSave 事件处理程序与 WorkbookBeforeSave 事件连接在一起。

    this.Application.WorkbookBeforeSave += new Microsoft.Office.Interop.Excel.AppEvents_WorkbookBeforeSaveEventHandler(Application_WorkbookBeforeSave);
    

    为了在保存工作簿后对其进行修改,前面的代码示例使用了以下对象:

  • Application 类的 ThisAddIn 字段。 Application 字段返回一个 Application 对象,该对象表示 Excel 的当前实例。

  • Wb 事件的事件处理程序的 WorkbookBeforeSave 参数。 Wb 参数是一个 Workbook 对象,用于表示已保存的工作簿。 有关详细信息,请参阅 Excel 对象模型概述

测试项目

测试项目

  1. F5 生成并运行项目。

    生成项目时,代码会编译成一个程序集,此程序集包含在项目的生成输出文件夹中。 Visual Studio 还会创建一组注册表项,通过这些注册表项,Excel 能够发现和加载 VSTO 外接程序,Visual Studio 还将开发计算机上的安全设置配置为允许 VSTO 外接程序运行。 有关详细信息,请参阅生成办公室解决方案

  2. 在 Excel 中,保存工作簿。

  3. 验证下面的文本是否已添加到工作簿中。

    This text was added by using code.

  4. 关闭 Excel。

清理项目

完成项目开发后,请从开发计算机上删除 VSTO 外接程序程序集、注册表项和安全设置。 否则,每次在开发计算机上打开 Excel 时,VSTO 外接程序都将继续运行。

在开发计算机上清理已完成的项目

  1. 在 Visual Studio 中,在 “生成” 菜单上,单击 “清理解决方案”

后续步骤

既然你已经创建了一个基本的 Excel VSTO 外接程序,就可以从下面这些主题中了解有关如何开发外 VSTO 加载项的详细信息: