Excel 对象模型入门
本例旨在为初学者简单介绍 Excel 对象模型。
- 打开 Visual Basic 编辑器(VBE)
- 单击视图 - >立即窗口以打开立即窗口(或 ctrl + G ):
- 你应该在 VBE 底部看到以下立即窗口:
此窗口允许你直接测试某些 VBA 代码。让我们开始吧,输入这个控制台:
?Worksheets.
VBE 具有智能感知,然后它应该打开工具提示,如下图所示:
在列表中选择 .Count 或直接输入 .Cout
以获取:
?Worksheets.Count
- 然后按 Enter 键。计算表达式并返回 1.这表示工作簿中当前存在的 Worksheet 数。问号(
?
)是 Debug.Print 的别名。
工作表是一个对象,而 Count 是一个方法。Excel 有几个 Object(Workbook
,Worksheet
,Range
,Chart
..),每个都包含特定的方法和属性。你可以在 Excel VBA 参考中找到 Object 的完整列表。工作表对象在此处显示 。
此 Excel VBA 引用应成为有关 Excel 对象模型的主要信息源。
- 现在让我们尝试另一个表达式,键入(不带
?
字符):
Worksheets.Add().Name = "StackOveflow"
- 按 Enter 键。这应该创建一个名为
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 对象集合组成。WorkSheets
是 Worksheet
对象的集合。每个 Object 都有一些程序员可以与之交互的属性和方法。
Excel 对象模型引用 Excel 对象层次结构
在所有对象的顶部是 Application
对象,它代表 Excel 实例本身。在 VBA 中编程需要很好地理解这个层次结构,因为我们总是需要对对象的引用才能调用 Method 或 Set / Get a property。
(非常简化的)Excel 对象模型可以表示为,
Application
Workbooks
Workbook
Worksheets
Worksheet
Range
Worksheet 对象的更详细版本(如 Excel 2007 中所示)如下所示,
可以在此处找到完整的 Excel 对象模型。
最后一些对象可能有 events
(例如:Workbook.WindowActivate
),它们也是 Excel 对象模型的一部分。