Excel 对象模型概述

若要开发使用 Microsoft Office Excel 的解决方案,可与由 Excel 对象模型提供的对象进行交互。 本主题介绍最重要的对象:

注意

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

对象模型紧跟用户界面。 Application 对象表示整个应用程序,并且每个 Workbook 对象都包含 Worksheet 对象的集合。 在这里,表示单元格的主要抽象是 Range 对象,它使你能够使用单独的单元格或单元格组。

除了 Excel 对象模型之外,Visual Studio 中的办公室项目还提供主机项主机控件,用于扩展 Excel 对象模型中的某些对象。 主机项和主机控件的行为类似于它们扩展的 Excel 对象,但它们还具有其他功能(如数据绑定功能)和其他事件。 有关详细信息,请参阅 使用扩展对象主机项和主机控件概述自动执行 Excel。

本主题概要介绍 Excel 对象模型。 有关可以了解有关整个 Excel 对象模型的详细信息的资源,请参阅 “使用 Excel 对象模型”文档

访问 Excel 项目中的对象

为 Excel 创建新的 VSTO 外接程序项目时,Visual Studio 会自动创建 ThisAddIn.vbThisAddIn.cs 代码文件。 可以通过使用 Me.Applicationthis.Application 访问应用程序对象。

为 Excel 创建新的文档级项目时,可选择创建新的 Excel 工作簿或 Excel 模板项目。 Visual Studio 在新的 Excel 项目中为工作簿和模板项目自动创建以下代码文件。

Visual Basic C#
ThisWorkbook.vb ThisWorkbook.cs
Sheet1.vb Sheet1.cs
Sheet2.vb Sheet2.cs
Sheet3.vb Sheet3.cs

可以在项目中使用 Globals 类来从各个类的外部访问 ThisWorkbookSheet1Sheet2Sheet3。 有关详细信息,请参阅对办公室项目中对象的全局访问。 以下示例调用PrintPreview方法Sheet1,无论代码是放置在 n 类之Sheet一还是ThisWorkbook类中。

Globals.Sheet1.PrintPreview();

由于 Excel 文档中的数据已高度结构化,因此该对象模型是分层模型且非常简单。 Excel 提供了数百个可能需要与之交互的对象,但你可以通过专注于一小部分可用对象来很好地开始对象模型。 这些对象包括以下四种:

  • 应用程序

  • 工作簿

  • Worksheet

  • 范围

    许多使用 Excel 完成的工作都是围绕这四种对象及其成员进行的。

应用程序对象

Excel Application 对象表示 Excel 应用程序本身。 Application 对象公开了大量有关正在运行的应用程序、应用于该实例的选项以及在该实例内部开启的当前用户对象的信息。

注意

不应将 Excel 中 EnableEvents 对象的 Application 属性设置为 false。 将此属性设置为 false 可防止 Excel 引发任何事件,包括主机控件的事件。

Workbook 对象

Workbook 对象表示 Excel 应用程序中的单个工作簿。

Visual Studio 中的 Office 开发工具通过提供 Workbook 类型来扩展 Workbook 对象。 此类型使你可以访问 Workbook 对象的所有功能。 有关详细信息,请参阅 工作簿主机项

Worksheet 对象

Worksheet 对象是 Worksheets 集合的成员。 Worksheet 的许多属性、方法和事件与由 ApplicationWorkbook 对象提供的成员相同或类似。

Excel 提供一个 Sheets 集合作为 Workbook 对象的属性。 Sheets 集合的每个成员都是 WorksheetChart 对象。

Visual Studio 中的 Office 开发工具通过提供 Worksheet 类型来扩展 Worksheet 对象。 此类型使你可以访问 Worksheet 对象的所有功能以及承载托管控件和处理新事件等新功能。 有关详细信息,请参阅 工作表宿主项

Range 对象

Range 对象是你将在 Excel 应用程序中使用最多的对象。 在可以操作 Excel 内的任何区域之前,必须将其表达为 Range 对象,并使用该范围的方法和属性。 一个 Range 对象,表示一个单元格、行、列、包含一个或多个单元格块的单元格选定区域(选定区域可能是连续的,也可能不是连续的)或甚至多个工作表上的一组单元格)。

Visual Studio 通过提供 NamedRangeXmlMappedRange 类型来扩展 Range 对象。 这些类型具有与 Range 对象相同的大部分功能以及数据绑定功能等新功能和新事件。 有关详细信息,请参阅 NamedRange 控件XmlMappedRange 控件

使用 Excel 对象模型文档

有关 Excel 对象模型的完整信息,可以参考 Excel 主互操作程序集 (PIA) 引用和 VBA 对象模型引用。

主互操作程序集引用

Excel PIA 参考文档介绍 Excel 的主互操作程序集中的类型。 本文档可从以下位置获取: Excel 2010 主互操作程序集参考

有关 Excel PIA 设计的详细信息,例如 PIA 中的类和接口之间的差异以及如何实现 PIA 中的事件,请参阅办公室主互操作程序集中的类和接口概述。

VBA 对象模型参考

VBA 对象模型引用在 Excel 对象模型被公开到 Visual Basic for Applications (VBA) 代码时记录该对象模型。 有关详细信息,请参阅 Excel 2010 对象模型参考

VBA 对象模型引用中的所有对象和成员都对应于 Excel PIA 中的类型和成员。 例如,VBA 对象模型引用中的 Worksheet 对象对应于 Worksheet Excel PIA 中的对象。 虽然 VBA 对象模型引用提供大多数属性、方法和事件的代码示例,但如果要在使用 Visual Studio 创建的 Excel 项目中使用本引用中的 VBA 代码,则必须将其转换为 Visual Basic 或 Visual C# 代码。

Title 说明
Excel 解决方案 说明可以如何创建 Microsoft Office excel 的文档级自定义项和 VSTO 外接程序。
使用范围 提供演示如何使用范围执行常见任务的示例。
使用工作表 提供演示如何使用工作表执行常见任务的示例。
使用工作簿 提供演示如何使用工作簿执行常见任务的示例。