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 物件模型的一部分。