Office 專案中的事件

每個 Office 專案範本都會自動產生數個事件處理常式。 文件層級自訂的事件處理常式與應用程式層級增益集的事件處理常式有些許不同。

**適用於:**本主題中的資訊適用於 Microsoft Office 2010 和 2007 Microsoft Office system 的文件層級專案和應用程式層級專案。 如需詳細資訊,請參閱依 Office 應用程式和專案類型提供的功能

文件層級專案

Visual Studio 會在文件層級自訂中為新的或現有的文件或工作表,提供產生的後置程式碼。 這個程式碼會引發兩個不同的事件:Startup 和 Shutdown。

Startup 事件

在執行文件且組件中的所有初始設定程式碼都已執行之後,每個主項目 (文件、活頁簿或工作表) 都會引發 Startup 事件。 這是在程式碼執行的類別建構函式中,所執行的最後動作。 如需主項目的詳細資訊,請參閱主項目和主控制項概觀

當您建立文件層級專案時,Visual Studio 會在產生的程式碼檔案中建立 Startup 事件的事件處理常式:

  • 如果是 Microsoft Office Word 專案,事件處理常式的名稱為 ThisDocument_Startup。

  • 如果是 Microsoft Office Excel 專案,事件處理常式有下列名稱:

    • Sheet1_Startup

    • Sheet2_Startup

    • Sheet3_Startup

    • ThisWorkbook_Startup

Shutdown 事件

當已載入您程式碼的應用程式定義域即將卸載時,每個主項目 (文件或工作表) 都會引發 Shutdown 事件。 在卸載時,於類別中呼叫它是最後要執行的動作。

當您建立文件層級專案時,Visual Studio 會在產生的程式碼檔案中建立 Shutdown 事件的事件處理常式:

  • 如果是 Microsoft Office Word 專案,事件處理常式的名稱為 ThisDocument_Shutdown。

  • 如果是 Microsoft Office Excel 專案,事件處理常式有下列名稱:

    • Sheet1_Shutdown

    • Sheet2_Shutdown

    • Sheet3_Shutdown

    • ThisWorkbook_Shutdown

注意事項注意事項

在文件的 Shutdown 事件處理常式期間,請勿以程式設計方式移除控制項。 當 Shutdown 事件發生時,文件的 UI 項目便無法再使用。 如果您想要在應用程式關閉之前移除控制項,請將程式碼加入至其他事件處理常式,例如 BeforeClose 或 BeforeSave。

事件處理常式方法宣告

每個事件處理常式方法宣告都會接收相同的引數:sender 和 e。 在 Excel 中,sender 引數會參考工作表 (例如 Sheet1 或 Sheet2);在 Word 中,sender 引數則會參考文件。 e 引數會參考事件的標準引數 (在此情況下不會使用)。

下列程式碼範例顯示 Word 文件層級專案中的預設事件處理常式。

Private Sub ThisDocument_Startup(ByVal sender As Object, ByVal e As System.EventArgs) _
    Handles Me.Startup

End Sub

Private Sub ThisDocument_Shutdown(ByVal sender As Object, ByVal e As System.EventArgs) _
    Handles Me.Shutdown

End Sub
private void ThisDocument_Startup(object sender, System.EventArgs e)
{
}

private void ThisDocument_Shutdown(object sender, System.EventArgs e)
{
}

下列程式碼範例顯示 Excel 文件層級專案中的預設事件處理常式。

注意事項注意事項

下列程式碼範例顯示 Sheet1 類別中的事件處理常式。 其他主項目類別中的事件處理常式名稱會對應至這個類別名稱。 例如,在 Sheet2 類別中,Startup 事件處理常式的名稱為 Sheet2_Startup。 在 ThisWorkbook 類別中,Startup 事件處理常式的名稱為 ThisWorkbook_Startup。

Private Sub Sheet1_Startup(ByVal sender As Object, ByVal e As System.EventArgs) _
    Handles Me.Startup

End Sub

Private Sub Sheet1_Shutdown(ByVal sender As Object, ByVal e As System.EventArgs) _
    Handles Me.Shutdown

End Sub
private void Sheet1_Startup(object sender, System.EventArgs e)
{
}

private void Sheet1_Shutdown(object sender, System.EventArgs e)
{
}

文件層級 Excel 專案中事件的順序

呼叫 Excel 專案中 Startup 事件處理常式的順序如下:

  1. ThisWorkbook_Startup.

  2. Sheet1_Startup.

  3. Sheet2_Startup.

  4. Sheet3_Startup.

  5. 其他按順序的工作表

呼叫活頁簿方案中 Shutdown 事件處理常式的順序如下:

  1. ThisWorkbook_Shutdown.

  2. Sheet1_Shutdown.

  3. Sheet2_Shutdown.

  4. Sheet3_Shutdown.

  5. 其他按順序的工作表

此順序是在編譯專案時決定。 如果使用者在執行階段重新排列工作表,下次開啟或關閉活頁簿時,引發事件的順序並不會因而變更。

應用程式層級專案

Visual Studio 會在應用程式層級增益集中提供產生的程式碼。 這個程式碼會引發兩個不同的事件:StartupShutdown

Startup 事件

在載入增益集且組件中的所有初始設定程式碼都已執行之後,就會引發 Startup 事件。 這個事件是由所產生程式碼檔中的 ThisAddIn_Startup 方法處理。

ThisAddIn_Startup 事件處理常式中的程式碼是第一個執行的使用者程式碼,除非您的增益集會覆寫 RequestComAddInAutomationService 方法: 在這個情況下,ThisAddIn_Startup 事件處理常式會在 RequestComAddInAutomationService 之後呼叫。 在 2007 Microsoft Office system 的增益集中,如果您的增益集會覆寫 RequestService 方法,則 ThisAddIn_Startup 事件處理常式中的程式碼也會在該方法之後呼叫。

如需增益集啟動順序的詳細資訊,請參閱應用程式層級增益集的架構

Shutdown 事件

當已載入您程式碼的應用程式定義域即將卸載時,會引發 Shutdown 事件。 這個事件是由所產生程式碼檔中的 ThisAddIn_Shutdown 方法處理。 卸載增益集時,這個事件處理常式會是最後一個執行的使用者程式碼。

Outlook 2010 增益集的 Shutdown 事件

對於已載入 Outlook 2010 中的增益集,只有在使用者使用 Outlook 的 [COM 增益集] 對話方塊停用該增益集時,才會引發 Shutdown 事件。 Outlook 結束時不會引發此事件。 如果您有必須在 Outlook 結束時執行的程式碼,請處理下列任一事件:

注意事項注意事項

您可以修改登錄,以強制 Outlook 在結束時引發 Shutdown 事件。 不過,如果系統管理員還原此設定,則 Outlook 結束時,便不會再執行任何您加入至 ThisAddIn_Shutdown 方法的程式碼。 如需詳細資訊,請參閱 Outlook 2010 的關閉變更 (英文)。

請參閱

工作

HOW TO:在 Visual Studio 中建立 Office 專案

其他資源

開發 Office 方案

文件層級自訂程式設計

應用程式層級增益集程式設計

Office 專案範本概觀