【教學】自訂可以監控所有活頁簿的Application事件 / 增益集

顯示結果從第 1 筆 到 2 筆,共計 2 筆
  1. #1
    Take it easy~ leonchou 的大頭照
    註冊日期
    2001-05-03
    討論區文章
    3,244

    【教學】自訂可以監控所有活頁簿的Application事件 / 增益集

    http://www.pczone.com.tw/showthread.php?t=67851
    引用 作者:mixmaster
    因為我有多檔案都要做備份,有變法不必每開一個檔就要重作一次嗎...
    自訂一個可以監控所有活頁簿的Application事件,再做成增益集。
    1. 開啟新活頁簿,按 Alt-F11 切換至程式編輯器。
    2. 插入 > 物件類別模組 (預設名稱為 Class1)。
    3. 此時會開啟一個空白的程式編輯區,請輸入以下程式碼:
      Public WithEvents App As Application
      註: App 是自訂名稱。這句意思是自訂一個含有事件的Application物件。
    4. 按下 Enter 後,編輯區左上方的物件選單中會多出一個 App 。
      點選 App,則右上方的選單會列出這個Application物件可用的事件。
    5. 在可用事件中點選 WorkbookBeforeSave,則會在編輯區產生一個空的事件:
      Private Sub App_WorkbookBeforeSave(ByVal Wb As Workbook, ByVal SaveAsUI As Boolean, Cancel As Boolean)

      End Sub
      乍看很像上面寫的 Workbook_BeforeSave 事件,差別就在於 Workbook_BeforeSave 只能監控程式所在活頁簿的存檔,而這個 App_WorkbookBeforeSave 可監控所有活頁簿的存檔動作。
    6. 現在可把另存備份的程式碼套入這個事件.. 但是要稍改一下:
      Private Sub App_WorkbookBeforeSave(ByVal Wb As Workbook, ByVal SaveAsUI As Boolean, Cancel As Boolean)
        Wb.SaveCopyAs "C:\TEMP\" & Wb.Name
      End Sub
    7. 接著再於程式編輯器功能表 插入 > 模組,在新開出的編輯區輸入以下程式:
      Public xlApp As New Class1 '宣告 xlApp 為上面自訂的物件模組

      Sub Auto_Open() 'Auto_Open會在此檔開啟時自動執行
        Set xlApp.App = Application
        '把自訂模組的 App 設為(也可說連結到)Application物件
      End Sub
      OK,程式的部分到此為止;按 Alt-Q 離開程式編輯器。
    8. 將此檔案存為 增益集 (副檔名為 XLA),並且關閉。
    9. 點選功能表 工具 > 增益集... > 瀏覽... 載入剛才做好的增益集。
      好了,你可隨意打開其他活頁簿、編輯然後儲存,試試自己做的成果。

    當然,你可在第 4、5 步驟選擇其他事件並編寫你想要的程式,享受輕鬆操控所有活頁簿的快感~

    你可能覺得:怎這麼麻煩阿??
    如同上述的Application物件以及控制項群組物件等等,Office有許多物件和其事件不是預設的,而事件的程式碼又必須依附物件模組,所以必須自訂物件模組。這些並非常用功能,但VBA仍然保留了自訂與延伸的空間給使用者。
    而且我寧願花時間寫教學,也不要給現成,讓問的人知其然不知所以然...
    希望對大家有幫助!



  2. #2
    會員 mixmaster 的大頭照
    註冊日期
    2001-07-13
    討論區文章
    377
    引用 作者:leonchou
    http://www.pczone.com.tw/showthread.php?t=67851

    自訂一個可以監控所有活頁簿的Application事件,再做成增益集。
    1. 開啟新活頁簿,按 Alt-F11 切換至程式編輯器。
    2. 插入 > 物件類別模組 (預設名稱為 Class1)。
    3. 此時會開啟一個空白的程式編輯區,請輸入以下程式碼:
      Public WithEvents App As Application
      註: App 是自訂名稱。這句意思是自訂一個含有事件的Application物件。
    4. 按下 Enter 後,編輯區左上方的物件選單中會多出一個 App 。
      點選 App,則右上方的選單會列出這個Application物件可用的事件。
    5. 在可用事件中點選 WorkbookBeforeSave,則會在編輯區產生一個空的事件:
      Private Sub App_WorkbookBeforeSave(ByVal Wb As Workbook, ByVal SaveAsUI As Boolean, Cancel As Boolean)

      End Sub
      乍看很像上面寫的 Workbook_BeforeSave 事件,差別就在於 Workbook_BeforeSave 只能監控程式所在活頁簿的存檔,而這個 App_WorkbookBeforeSave 可監控所有活頁簿的存檔動作。
    6. 現在可把另存備份的程式碼套入這個事件.. 但是要稍改一下:
      Private Sub App_WorkbookBeforeSave(ByVal Wb As Workbook, ByVal SaveAsUI As Boolean, Cancel As Boolean)
        Wb.SaveCopyAs "C:\TEMP\" & Wb.Name
      End Sub
    7. 接著再於程式編輯器功能表 插入 > 模組,在新開出的編輯區輸入以下程式:
      Public xlApp As New Class1 '宣告 xlApp 為上面自訂的物件模組

      Sub Auto_Open() 'Auto_Open會在此檔開啟時自動執行
        Set xlApp.App = Application
        '把自訂模組的 App 設為(也可說連結到)Application物件
      End Sub
      OK,程式的部分到此為止;按 Alt-Q 離開程式編輯器。
    8. 將此檔案存為 增益集 (副檔名為 XLA),並且關閉。
    9. 點選功能表 工具 > 增益集... > 瀏覽... 載入剛才做好的增益集。
      好了,你可隨意打開其他活頁簿、編輯然後儲存,試試自己做的成果。

    當然,你可在第 4、5 步驟選擇其他事件並編寫你想要的程式,享受輕鬆操控所有活頁簿的快感~

    你可能覺得:怎這麼麻煩阿??
    如同上述的Application物件以及控制項群組物件等等,Office有許多物件和其事件不是預設的,而事件的程式碼又必須依附物件模組,所以必須自訂物件模組。這些並非常用功能,但VBA仍然保留了自訂與延伸的空間給使用者。
    而且我寧願花時間寫教學,也不要給現成,讓問的人知其然不知所以然...
    希望對大家有幫助!
    太棒囉!你真是個好人...
    thanks!

類似的主題

  1. 【問題】Excel 2003"沒有新字型可以套用到這個活頁簿"訊息
    作者:aristo1213 所在討論版:-- OFFICE 相 關 軟 體 討 論 版
    回覆: 0
    最後發表: 2007-10-16, 12:08 PM
  2. 【問題】共用活頁簿的問題
    作者:Ashley 所在討論版:-- OFFICE 相 關 軟 體 討 論 版
    回覆: 1
    最後發表: 2006-10-22, 12:42 AM
  3. 【求助】Excel 的活頁簿是否可做資料鏈結?!?
    作者:cowgirl 所在討論版:-- OFFICE 相 關 軟 體 討 論 版
    回覆: 5
    最後發表: 2005-08-26, 06:30 PM
  4. 【求助】USB 傳輸速度可以監控嗎?
    作者:~GG~ 所在討論版:-- 電 腦 硬 體 討 論 版
    回覆: 1
    最後發表: 2004-12-18, 01:56 AM
  5. ntop可以監控不同的LAN嗎?【求助】
    作者:yilang 所在討論版:-- 網 路 技 術 版
    回覆: 0
    最後發表: 2002-10-11, 08:44 AM

 

此網頁沒有從搜尋引擎而來的訪客

發表文章規則

  • 不可以發表新主題
  • 不可以回覆文章
  • 不可以上傳附加檔案
  • 不可以編輯自己的文章
  •