演练:为 Excel 创建第一个文档级自定义

本介绍性演练演示如何创建 Microsoft Office Excel 的文档级自定义项。 仅在特定工作簿处于打开状态时,才可使用你在这种解决方案中创建的功能。 不能使用文档级自定义项进行应用程序范围的更改,例如在任何工作簿处于打开状态时显示新的功能区选项卡。

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

本演练阐释了以下任务:

  • 创建 Excel 工作簿项目。

  • 将文本添加到 Visual Studio 设计器中保存的工作表。

  • 编写代码,使用 Excel 对象模型在自定义工作簿处于打开状态时向其中添加文本。

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

  • 清理已完成的项目,以便从开发计算机删除不必要的生成文件和安全设置。

    注意

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

先决条件

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

创建项目

在 Visual Studio 中创建新的 Excel 工作簿项目

  1. 启动 Visual Studio。

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

  3. “创建新项目 ”对话框中,选择 Excel VSTO 工作簿 项目。

    注意

    还可以通过在“创建新项目”对话框顶部的“搜索”文本框中键入办公室产品的名称来搜索模板。 例如,键入 Excel 将显示 Excel 的所有项目模板。 还可以通过选择“项目类型”下拉列表中的办公室来筛选模板,以便仅显示办公室的模板列表。 有关详细信息,请参阅 在 Visual Studio 中创建新项目。

  4. 单击“下一步”。

  5. “配置新项目”对话框的“名称”框中键入 FirstWorkbookCustomization,然后单击“创建”。

  6. Visual Studio Tools for 办公室 项目向导中选择“创建新文档”,然后单击“确定”。

    • Visual Studio 将创建 FirstWorkbookCustomization 项目,并将以下文件添加到项目中。

    • FirstWorkbookCustomization.xlsx - 表示项目中的 Excel 工作簿。 包含所有工作表和图表。

    • Sheet1 (Visual Basic 的 .vb 文件或 Visual C# 的 .cs 文件) - 提供工作簿中第一个工作表的设计图面和代码的工作表。 有关详细信息,请参阅 工作表宿主项

    • Sheet2 (Visual Basic 的 .vb 文件或 Visual C# 的 .cs 文件) - 提供工作簿中第二个工作表的设计图面和代码的工作表。

    • Sheet3 (Visual Basic 的 .vb 文件或 Visual C# 的 .cs 文件) - 提供工作簿中第三个工作表的设计图面和代码的工作表。

    • ThisWorkbook (Visual Basic 的 .vb 文件或 Visual C# 的 .cs 文件) - 包含工作簿级自定义的设计图面和代码。 有关详细信息,请参阅 工作簿主机项

      将在设计器中自动打开 Sheet1 代码文件。

在设计器中关闭和重新打开工作表

如果开发项目时有意或意外关闭设计器中的工作簿或工作表,可以重新打开它。

关闭并重新打开设计器中的工作表

  1. 通过单击设计器窗口的 “关闭 ”按钮(X)关闭工作簿。

  2. 解决方案资源管理器中,右键单击 Sheet1 代码文件,然后单击“视图设计器”。

    - 或 -

    解决方案资源管理器中,双击 Sheet1 代码文件。

向设计器中的工作表添加文本

可以通过修改已在设计器中打开的工作表来设计自定义项的用户界面 (UI)。 例如,可以将文本添加到单元格、应用公式或添加 Excel 控件。 有关如何使用设计器的详细信息,请参阅 Visual Studio 环境中的办公室项目。

使用设计器将文本添加到工作表

  1. 在设计器中打开的工作表中,选择单元格 A1,然后键入以下文本。

    此文本是使用设计器添加的。

警告

如果将此文本行添加到单元格 A2,此示例中的其他代码将覆盖该行。

以编程方式向工作表添加文本

接下来,将代码添加到 Sheet1 代码文件。 新代码使用 Excel 对象模型向工作簿添加第二行文本。 默认情况下,Sheet1 代码文件包含以下生成代码:

  • Sheet1 类的分部定义,用于表示工作表的编程模型,并提供对 Excel 对象模型的访问权限。 有关详细信息, 工作表宿主项Word 对象模型概述Sheet1 类的其余部分是在隐藏代码文件中定义的,不应修改该代码文件。

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

使用代码向工作表添加第二行文本

  1. 解决方案资源管理器中,右键单击 Sheet1,然后单击“查看代码”。

    将在 Visual Studio 中打开代码文件。

  2. Sheet1_Startup 事件处理程序替换为以下代码。 当打开 Sheet1 时,此代码将向工作表添加第二行文本。

    private void Sheet1_Startup(object sender, System.EventArgs e)
    {
        Microsoft.Office.Tools.Excel.NamedRange nr =
            this.Controls.AddNamedRange(this.Range["A2"], "NamedRange1");
        nr.Value2 = "This text was added by using code";
    }
    

测试项目

测试工作簿

  1. F5 生成并运行项目。

    生成项目时,会将代码编译到与该工作簿相关联的程序集中。 Visual Studio 将该工作簿和程序集的副本放入项目的生成输出文件夹中,并将开发计算机上的安全设置配置为允许自定义项运行。 有关详细信息,请参阅生成办公室解决方案

  2. 验证工作簿中显示以下文本。

    此文本是使用设计器添加的。

    This text was added by using code.

  3. 关闭此工作簿。

清理项目

完成项目开发后,应删除生成输出文件夹中的文件和由生成过程创建的安全设置。

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

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

后续步骤

既然你已经创建了一个基本的 Excel 文档级自定义项,就可以从下面这些主题中了解有关如何开发自定义项的详细信息: