1. 程式人生 > >使用Win32::OLE操作Excel——Excel物件模型

使用Win32::OLE操作Excel——Excel物件模型

像VBA操作Excel一樣,Win32::OLE模組也是通過物件操作來控制Excel。

如果想自動化操作和控制Excel應用程式,則必須要與Excel物件模型所提供的物件進行互動。理解和熟悉Excel物件模型,就可以更容易的操作Excel。

Excel物件模型提供了很多物件[1],有些物件可能會經常遇到。一般情況下,對Excel程式的設定、對工作簿和工作表的操作、單元格和單元格區域的操作以及圖示的操作,是經常涉及到的。因此,在學習Excel物件模型時,先集中學習與這些操作相關的物件、屬性、方法和事件,以此來加深對Excel物件模型的認識和理解。

以上內容的操作,實際上是就對Excel物件的操作:

  • Excel程式  Application物件
  • 工作簿       Workbook物件
  • 工作表       Worksheet物件
  • 單元格       Range物件
  • 圖示          Chart物件

Application物件

  Excel Application物件代表Excel應用程式本身。Application物件公開了大量有關正在執行的應用程式、應用於該例項的選項以及在該例項中開啟的當前使用者物件的資訊。

  Application物件提供了很多屬性來控制Excel的一般狀態。

  表1:一些控制Excel狀態的Application屬性

屬性 型別 說明
EditDirectoryInCell
布林 直接就地獲取或設定編輯單元格的能力。如果為 False,則您只能在公式欄中編輯單元格。
FixedDecimal 布林 如果為 True,則所有的數字值都使用 FixedDecimalPlaces 屬性來確定小數位數;否則將忽略 FixedDecimalPlaces 屬性(預設值為 False)。
FixedDecimalPlaces long 確定用於數值資料的小數位數(如果 FixedDecimal 屬性為 True)。
ScreenUpdating 布林 如果為 True,Excel 就會在每個方法呼叫之後更新其螢幕。為了節省時間並且使您的應用程式看起來更加專業,您可以在程式碼執行時關掉顯示。一旦完成,就一定要再次將此屬性值重新設定為 True。Excel 不會自動為您重新設定它。
StandardFont 字串 獲取或設定 Excel 中預設字型的名稱;只有在重新啟動 Excel 之後才會生效。
StandardFontSize long 獲取或設定 Excel 中預設字型的大小;只有在重新啟動 Excel 之後才會生效。

  在表1列出的所有屬性中,最可能使用的一個屬性是ScreenUpdating。使用這個屬性,不但使Excel應用程式看起來更專業,還可以提高它們的執行效率——在每次修改後更新顯示會嚴重影響程式碼的執行效率。

  Application物件還提供了一組控制Excel中顯示的屬性,可以修改這些屬性改變使用者在螢幕上所看到的內容。

  表2:一些控制Excel外觀的Application屬性

屬性 型別 說明 DisplayAlerts 布林 如果為 True(預設值),則當執行程式碼時,只要有必要(例如在刪除一個工作表時),Excel 就會顯示警告訊息。設定為 False 以忽略警告。Excel 的行為就好像您已經為每個警告選擇了預設值。 DisplayFormulaBar 布林 如果為 True(預設值),Excel 就會顯示標準公式欄以編輯單元格;設定為 False 以隱藏公式欄。 DisplayFullScreen 布林 如果為 True,則 Excel 以全屏模式執行(這種模式與僅僅最大化 Excel 視窗的效果不一樣);其預設值為 False。

  Application物件的一些屬效能夠返回其他的物件。

  表3:返回物件的Application屬性

屬性 型別 說明
ActiveCell 範圍 返回對活動視窗(頂部的視窗)中當前活動單元格的引用。如果沒有活動視窗,此屬性會產生一個錯誤。
ActiveChart 圖表 返回對當前活動的圖表的引用。對於一個嵌入式圖表來說,只有當此圖表被選中或被啟用時才可認為是活動的。
ActiveSheet 物件 返回對活動工作簿中的活動工作表的引用。
ActiveWindow 視窗 返回對活動視窗(頂部的視窗)的引用;如果沒有活動視窗,則不返回任何結果。
Charts 工作表 返回 Sheet 物件(Chart 和 Worksheet 物件的父物件)的集合,這些物件包含對活動工作簿中的每個圖表的引用。
Selection 物件 返回應用程式中選中的物件。可能是一個 Range、一個 Worksheet 或任何其他的物件 — 同樣適用於 Window 類,在這種情況下,選擇通常是一個 Range 物件。如果當前沒有物件被選中,則不返回任何結果。
Sheets 工作表 返回 Sheet 物件的集合,這些物件包含對活動工作簿中每個工作表的引用。
Workbooks 工作簿 返回 Workbook 物件的集合,這些物件包含對所有開啟的工作簿的引用。

  最常用的是Workbooks屬性,它可以開啟、新建或迴圈訪問開啟的工作簿。

  • 新建工作簿

       my $workbook = $excel->Workbooks->add();

  • 開啟已有工作簿

       my $workbook = $excel->Workbooks->open('c:/documents/myworkbook.xls');

  • 引用某個工作簿

      可以使用整數(指示在集合中的位置)或工作簿名作為 Workbooks 集合中的索引。

      my $workbook = $excel->Workbooks(1);

      如果想要通過名稱引用工作簿,需要注意對其進行引用的方法:必須使用在標題欄看到的名稱,在儲存該檔案之前,這個名稱不包括“.xls”副檔名:

      # 儲存工作簿之前,這樣引用

      my $workbook = $excel->Workbooks('Book1');

      # 儲存工作簿之後,這樣引用

      my $workbook = $excel->Workbooks('Book1.xls');

  • 關閉工作簿

       與大多數的集合不同,這個集合允許一次性地關閉所有的成員。下面的方法呼叫關閉所有開啟的工作簿:

       $excel->Workbooks->close();

Workbook物件

Worksheet物件

Range物件

[1] 檢視Excel物件模型的方法:開啟Excel後,按F1鍵,在“Excel幫助”中,點選“目錄”,然後點選“Microsoft Excel 物件模型”連結即可。

【參考文件】