Excel 对象模型入门

本例旨在为初学者简单介绍 Excel 对象模型。

  1. 打开 Visual Basic 编辑器(VBE)
  2. 单击视图 - >立即窗口以打开立即窗口(或 ctrl + G ):

StackOverflow 文档

  1. 你应该在 VBE 底部看到以下立即窗口:

StackOverflow 文档

此窗口允许你直接测试某些 VBA 代码。让我们开始吧,输入这个控制台:

?Worksheets. 

VBE 具有智能感知,然后它应该打开工具提示,如下图所示:

StackOverflow 文档

在列表中选择 .Count 或直接输入 .Cout 以获取:

?Worksheets.Count
  1. 然后按 Enter 键。计算表达式并返回 1.这表示工作簿中当前存在的 Worksheet 数。问号(?)是 Debug.Print 的别名。

工作表是一个对象,而 Count 是一个方法。Excel 有几个 Object(WorkbookWorksheetRangeChart ..),每个都包含特定的方法和属性。你可以在 Excel VBA 参考中找到 Object 的完整列表。工作表对象在此处显示

此 Excel VBA 引用应成为有关 Excel 对象模型的主要信息源。

  1. 现在让我们尝试另一个表达式,键入(不带 ? 字符):
Worksheets.Add().Name = "StackOveflow"
  1. 按 Enter 键。这应该创建一个名为 StackOverflow. 的新工作表:

StackOverflow 文档

要理解此表达式,你需要阅读上述 Excel 参考中的添加功能。你会发现以下内容:

Add:  Creates a new worksheet, chart, or macro sheet. 
The new worksheet becomes the active sheet. 
Return Value: An Object value that represents the new worksheet, chart,
 or macro sheet.

所以 Worksheets.Add() 创建一个新的工作表并将其返回。工作表( 没有 s )本身就是一个可以在文档中找到的对象,而 Name 是它的一个属性 (见这里 )。它被定义为:

Worksheet.Name Property:  Returns or sets a String value that 
 represents the object name.

因此,通过调查不同的对象定义,我们能够理解这个代码 Worksheets.Add().Name = "StackOveflow"

Add() 创建并添加一个新工作表并返回对它的引用,然后我们将其 Name 属性设置为 StackOverflow

现在让我们更正式,Excel 包含几个对象。这些对象可以由同一类的一个或多个 Excel 对象集合组成。WorkSheetsWorksheet 对象的集合。每个 Object 都有一些程序员可以与之交互的属性和方法。

Excel 对象模型引用 Excel 对象层次结构

在所有对象的顶部是 Application 对象,它代表 Excel 实例本身。在 VBA 中编程需要很好地理解这个层次结构,因为我们总是需要对对象的引用才能调用 Method 或 Set / Get a property。

(非常简化的)Excel 对象模型可以表示为,

                            Application
                             Workbooks
                             Workbook
                            Worksheets
                             Worksheet
                              Range

Worksheet 对象的更详细版本(如 Excel 2007 中所示)如下所示,

StackOverflow 文档

可以在此处找到完整的 Excel 对象模型。

最后一些对象可能有 events(例如:Workbook.WindowActivate),它们也是 Excel 对象模型的一部分。