将 NamedRange 控件添加到工作表

在文档级项目中,你可以在设计时和运行时将 NamedRange 控件添加到 Microsoft Office Excel 工作表。

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

你也可以在 VSTO 外接程序项目中,在运行时添加 NamedRange 控件。

本主题介绍了以下任务:

在设计时添加 NamedRange 控件

有多种方法可在设计时在文档级项目中将 NamedRange 控件添加到工作表:从 Excel、从 Visual Studio“工具箱” ,以及从“数据源” 窗口。

注意

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

若要使用 Excel 中的“名称框”向工作表添加 NamedRange 控件

  1. 选择要包含在命名范围中的一个或多个单元格。

  2. “名称框”中,键入区域的名称,然后按 Enter

    “名称框” 位于公式栏旁边,也即工作表 A 列的正上方。

若要使用“工具箱”向工作表添加 NamedRange 控件

  1. 打开 “工具箱” 并单击 “Excel 控件” 选项卡。

  2. 单击 NamedRange 并将其拖到工作表。

    “添加命名范围” 对话框随即出现。

  3. 选择要包含在命名范围中的一个或多个单元格。

  4. 单击“确定”。

    如果不需要提供给控件的默认名称,可以在 “属性” 窗口中更改名称。

若要使用“数据源”窗口向工作表添加 NamedRange 控件

  1. 打开“数据源” 窗口并为项目创建数据源。 有关详细信息,请参阅添加新连接

  2. 将单个字段从 “数据源” 窗口拖到工作表中。

    数据绑定 NamedRange 控件将添加到工作表中。 有关详细信息,请参阅数据绑定和Windows 窗体

在文档级项目中的运行时添加 NamedRange 控件

可以在运行时以编程方式将 NamedRange 控件添加到工作表。 这使得你可以创建宿主控件以响应事件。 工作表关闭时,动态创建的命名范围不作为宿主控件保留在工作表中。 有关详细信息,请参阅在运行时向办公室文档添加控件。

以编程方式将 NamedRange 控件添加到工作表中

  1. StartupSheet1事件处理程序中,插入下列代码以将 NamedRange 控件添加到单元格 A1 并将其 Value2 属性设置为 Hello world!

    Microsoft.Office.Tools.Excel.NamedRange textInCell;
    textInCell = this.Controls.AddNamedRange(this.get_Range("A1"), "cellText");
    
    textInCell.Value2 = "Hello world!";
    

在 VSTO 外接程序项目中的运行时添加 NamedRange 控件

可以按编程方式将 NamedRange 控件添加到 VSTO 外接程序项目中任何打开的工作表中。 工作表关闭时,动态创建的命名范围不作为宿主控件保留在工作表中。 有关详细信息,请参阅 运行时在 VSTO 外接程序中扩展 Word 文档和 Excel 工作簿。

以编程方式将 NamedRange 控件添加到工作表中

  1. 下面的代码将生成基于打开工作表的工作表宿主项,然后将 NamedRange 控件添加到 A1 单元格并将其 Value2 属性设置为 Hello world

    private void AddNamedRange()
    {
        Microsoft.Office.Tools.Excel.NamedRange textInCell;
    
        Worksheet worksheet = Globals.Factory.GetVstoObject(
            Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets[1]);
    
    
        Excel.Range cell = worksheet.Range["A1"]; 
        textInCell = worksheet.Controls.AddNamedRange(cell, "MyNamedRange");
        textInCell.Value2 = "Hello World";
     }