다음을 통해 공유


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용 추가 기능에서 ThisAddIn_Startup 이벤트 처리기의 코드는 추가 기능에서 RequestService 메서드를 재정의한 경우 해당 메서드 다음에 호출될 수도 있습니다.

추가 기능의 시작 시퀀스에 대한 자세한 내용은 응용 프로그램 수준 추가 기능 아키텍처를 참조하십시오.

Shutdown 이벤트

Shutdown 이벤트는 코드가 로드된 응용 프로그램 도메인이 언로드되기 직전에 발생합니다. 이 이벤트는 생성된 코드 파일의 ThisAddIn_Shutdown 메서드에서 처리됩니다. 이 이벤트 처리기는 추가 기능이 언로드될 때 실행할 마지막 사용자 코드입니다.

Outlook 2010 추가 기능의 Shutdown 이벤트

Outlook 2010에 로드되는 추가 기능의 경우, 사용자가 Outlook의 COM 추가 기능 대화 상자를 사용하여 추가 기능을 사용하지 않도록 설정할 경우에만 Shutdown 이벤트가 발생합니다. Outlook이 종료될 때는 이 이벤트가 발생하지 않습니다. Outlook이 종료될 때 실행되어야 하는 코드가 있는 경우에는 다음 이벤트 중 하나를 처리합니다.

참고

레지스트리를 수정하여 Outlook이 종료될 때 Shutdown 이벤트를 발생시키도록 강제로 지정할 수 있습니다. 그러나 관리자가 이 설정을 되돌리면 ThisAddIn_Shutdown 메서드에 추가한 모든 코드가 더 이상 Outlook 종료 시 실행되지 않습니다. 자세한 내용은 Shutdown Changes for Outlook 2010을 참조하십시오.

참고 항목

작업

방법: Visual Studio에서 Office 프로젝트 만들기

기타 리소스

Office 솔루션 개발

문서 수준 사용자 지정 프로그래밍

응용 프로그램 수준 추가 기능 프로그래밍

Office 프로젝트 템플릿 개요