Calc 使用手冊 第十六章 重複的任務自動化
內容目錄 介紹... 1 使用巨集錄製... 1 撰寫您自己的函數... 5 使用巨集做為函數... 8 結論... 10 i
介紹 巨集一個指令或按鍵點擊的結果被儲存, 以供未來使用 最簡單的巨集例子就是 " 輸入 " 您的住址 OpenOffice.org (OOo) 巨集語言是很有彈性的, 允許您進行簡單或複雜的工作, 巨集對不斷重覆的作業是特別有用處的, 這個章節會扼要的介紹一些有關於在 Calc 中使用巨集程式的普遍的問題 使用巨集錄製 在開始使用 OpenOffice.org 3 的第 13 章 ( 巨集入門 ) 中, 有提供一些在 OpenOffice.org 使用巨集錄製來建立巨集的基本概念, 我們用實例加以說明巨集錄製的方法, 以下的步驟可以建立一個巨集, 用來執行插入內容 ( 選擇性貼上 ) 功能, 將選取儲存格均乘以 3: 1) 開啟一個新的試算表 2) 輸入一些數字至工作表中 3) 選擇儲存格 A3, 這個儲存格中含有一個數字 3, 然後按鍵盤 Ctrl+C 鍵複製這個數字至剪貼簿 4) 選擇儲存格範圍 A1:C3 圖 1: 在儲存格中輸入數字 5) 使用功能表 工具 巨集 記錄巨集 開啟巨集錄製, 錄製巨集的對話方塊將顯示一個結束記錄鈕 圖 2: 結束記錄鈕 6) 使用功能表 編輯 插入 ( 選擇性貼上 ) 開啟選擇性貼上對話方塊 1 使用巨集錄製
圖 3: 選擇性貼上對話方塊 7) 在計算區中點選乘, 然後點擊確定鈕, 現在範圍中的儲存格都乘以 3 圖 4: A1:C3 儲存格都乘以 3 8) 點擊結束記錄鈕停止巨集錄製, 並且儲存這個巨集 9) 選擇目前文件, 以本例, 目前的 Calc 文件是無標題 1, 點擊文件旁的 + 號檢視包含的程式庫, 在 OOo 3.0 版以前, 新文件被建立在標準程式庫中, 現在已不再如此了, 在 OOo3.0 版以後, 標準程式庫是不會被建立的, 直到文件被儲存為止, 或者是程式庫是被需要才要建立, 若您想要, 建立一個新的程式庫來放置巨集 ( 但這是不需要的 ) 使用巨集錄製 2
圖 5: 在新建立文件中選擇標準程式庫 10) 點擊新增模組鈕以在標準程式庫中建立一個模組, 如果沒有程式庫存在, 則標準程式庫會自動的被建立和使用 圖 6: 為新的模組命名 11) 點擊確定鈕建立一個名稱為 Module1 的模組 圖 7: 選擇巨集模組的名稱 3 使用巨集錄製
12) 選擇新建立的 Module1, 輸入巨集的名稱 PasteMultiply, 然後點擊儲存鈕 被建立的巨集是被儲存在無標題 1 文件的標準程式庫中的 Module1 中 往後只要選取工作表儲存格, 並執行這個巨集, 這些選取的儲存格數值都會乘 3 無標題 1 文件的 PasteMultiply 巨集程式碼 : sub PasteMultiply rem ---------------------------------------------------------------------- rem define variables dim document as object dim dispatcher as object rem ---------------------------------------------------------------------- rem get access to the document document = ThisComponent.CurrentController.Frame dispatcher = createunoservice("com.sun.star.frame.dispatchhelper") rem ---------------------------------------------------------------------- dim args1(5) as new com.sun.star.beans.propertyvalue args1(0).name = "Flags" args1(0).value = "A" args1(1).name = "FormulaCommand" args1(1).value = 3 args1(2).name = "SkipEmptyCells" args1(2).value = false args1(3).name = "Transpose" args1(3).value = false args1(4).name = "AsLink" args1(4).value = false args1(5).name = "MoveMode" args1(5).value = 4 dispatcher.executedispatch(document, ".uno:insertcontents", "", 0, args1()) end sub 使用巨集錄製 4
撰寫您自己的函數 Calc 能夠讓巨集做為一個 Calc 函數, 可以下列步驟建立一個簡單的巨集 : 1) 建立一份新的 Calc 文件, 名稱為 CalcTestMacros.ods 2) 使用功能表 工具 巨集 組織巨集 OpenOffice.org Basic 開啟 OpenOffice.org 基本巨集對話方塊, 我的巨集包含了您所撰寫或加入至 OOo 的巨集 ; OpenOffice.org 巨集中包括了 OOo 中所有巨集, 不應該被變動 ; 所有其他的程式庫是目前開啟的 OOo 文件 圖 8: OpenOffice.org Basic 巨集對話方塊 3) 點擊管理鈕, 開啟 OpenOffice.org 基本巨集組織器對話方塊 4) 點擊程式庫標籤 5) 選擇包含巨集的文件 5 撰寫您自己的函數
圖 9: OpenOffice.org 基本巨集組織器 6) 點擊新建鈕開啟新增程式對話方塊 圖 10: 新的增程庫對話方塊 7) 輸入程式庫的名稱 ( 例如 :AuthorsCalcMacros), 然後點擊確定鈕建立程式庫 新的程式庫會顯示在程式庫清單中 圖 11: 在組織器中顯示程式庫 撰寫您自己的函數 6
8) 選擇 AuthorsCalcMacros, 然後點擊編輯鈕來加以編輯程式庫 Ooo 會自動建立一個模組, 名稱為 Module1 和一個巨集, 名稱為 Main 圖 12: Basic Integrated Development Environment (IDE) 9) 修改程式碼, 如下面清單所列, 最重要加入的地方是建立 NumberFive 函數, 這個函數是用來傳回 5 這個數字 : REM ***** BASIC ***** Option Explicit Sub Main End Sub Function NumberFive() NumberFive = 5 End Function 7 撰寫您自己的函數
使用巨集做為函數 使用新建立的 Calc 文件 CalcTestMacros.ods, 輸入公式 =NumberFive( ),Calc 發現了這個巨集和呼叫它 圖 13: 使用 NumberFive() 巨集做為 Calc 函數 備註 函數的名稱是不區分大小寫, 在圖 13, 我們在儲存格 A1 輸入 =NumberFive(), Calc 也清楚顯示 =NumberFive() 儲存 Calc 文件, 並且關閉它, 並再次開啟, 預設, 當您開啟的文件中含有巨集,OOo 將會提出警告, 點擊使用巨集, 否則 OOo 將不允許在文件中執行任何巨集, 若您不希望文件中含有巨集, 比較安全的做法是不使用巨集, 以免巨集中夾帶病毒 圖 14: OOo 警告您, 文件中含有巨集 當文件載入後,Calc 不再發現函數 圖 15: 函數無法執行 OOo 文件中能夠包含巨集, 當文件被建立和儲存, 它自動包含了一個程式庫, 名稱為 Standard, 這個 Standard 程式庫在文件被開啟時會自動載入, 沒有其他程式庫會自動被開啟, Calc 可以開啟和看到函數的巨集程式庫, 程式庫在 OpenOffice.org 巨集 我的巨集和 Calc 文件是會被檢查相似的函數名稱, 這個 NumberFive() 函數被儲存在 AuthorsCalcMacros 程式庫, 而檔文件被開啟時, 並沒有自動被載入, 使用功能表 工具 巨集 組織巨集 OpenOffice.org Basic 開啟 OpenOffice.org 基本巨集對話方塊, 擴展 CalcTestMacros 和尋找 AuthorsCalcMacros, 這圖被載入的程式庫圖示是和沒有載入的程式庫圖示不相同 撰寫您自己的函數 8
圖 16: 未被載入的巨集程式庫 點擊 AuthorsCalcMacros 程式庫旁的 + 號, 載入程式庫, 圖示將發生改變, 這個程式庫現在已被載入, 點擊關閉鈕關閉對話方塊 圖 17: 載入的巨集程式庫 不幸的, 儲存格包含 =NumberFive() 是發生了錯誤,Calc 並沒有重新計算發生錯誤的儲存格, 除非您編輯或變更它 通常的解決方式是將儲存巨集儲存在 Standard 程式庫中做為函數, 若巨集過大或是有許多的巨集, 可以在 Standard 程式庫建立一個您喜歡名稱的根目錄, 根目錄巨集載入包含了執行的程式庫, 然後呼叫執行 1) 使用功能表 工具 巨集 組織巨集 OpenOffice.org Basic 開啟 OpenOffice.org 基本巨集對話方塊 選擇 NumberFive 巨集和點擊編輯鈕開啟巨集進行編輯 圖 18: 選擇巨集和點擊編輯鈕 9 撰寫您自己的函數
2) 更改 NumberFive 名稱為 NumberFive_Implementation Function NumberFive_Implementation() NumberFive_Implementation() = 5 End Function 3) 在 Basic IDE 中, 移動滑鼠游標至工具列按鈕上顯示工具提示, 點擊選擇巨集鈕開啟 OpenOffice.org 基本巨集對話方塊 圖 19: 工具列 4) 在 CalcTestMacros 文件中選擇 Standard 程式庫和點擊開啟新檔鈕, 建立一個新的模組, 輸入一個有意義的名稱, 像是 CalcFunctions, 然後點擊確定鈕,OOo 自動建立名為 Main 的巨集, 和開啟一個模組進行編輯 5) 建立一個巨集至 Standard 程式庫, 命名為 implementation_function, 新的巨集將會載入 AuthorsCalcMacros 程式庫, 然後呼叫 implementation_function Function NumberFive() If NOT BasicLibraries.isLibraryLoaded("AuthorsCalcMacros") Then BasicLibraries.LoadLibrary("AuthorsCalcMacros") End If NumberFive = NumberFive_Implementation() End Function 6) 儲存 關閉和再次開啟 Calc 文件, 這一次, NumberFive() 函數將會正常作用了 結論 這一章節中提供了簡單的複習如何建立程式庫和模組 使用巨集錄製 使用巨集做為 Calc 的函數 撰寫自己的函數而不使用巨集錄製, 每一個標題都可以更深入的探討, 您現在所學習到的, 只是開始而已 結論 10