Visual C++.NET에서 Office Automation에 형식 라이브러리를 사용하는 방법

요약

이 문서에서는 COM(구성 요소 개체 모델) 규격 애플리케이션의 Automation 클라이언트 역할을 하는 Visual C++ .NET 프로젝트를 빌드하는 방법을 설명합니다. 이 문서의 샘플에서는 Office 구성 요소에 대한 클래스 래퍼와 함께 MFC(Microsoft Foundation Classes)를 사용합니다.

추가 정보

다음 단계에서는 간단한 Automation 클라이언트를 빌드하는 방법을 보여 줍니다. 이 절차의 세 가지 주요 단계는 다음과 같습니다.

  1. Automation 클라이언트를 만듭니다.
  2. Microsoft Excel을 자동화하는 코드를 추가합니다.
  3. Automation 클라이언트를 실행합니다.

사용 중인 Automation 서버에 관계없이 첫 번째 단계(Automation 클라이언트 만들기)를 사용하여 새 Automation 클라이언트를 만들 수 있습니다. 두 번째 단계(Microsoft Excel을 자동화하는 코드 추가)는 Automation 서버와 관련이 있습니다.

Automation 클라이언트 만들기

  1. Microsoft Visual Studio .NET을 시작합니다. [파일] 메뉴에서 [새로 만들기]를 클릭한 다음 [프로젝트]를 클릭합니다. Visual C++ 프로젝트 형식에서 MFC 애플리케이션을 선택한 다음 프로젝트 이름을 AutoProject로 지정합니다.

  2. MFC 애플리케이션 마법사가 나타나면 애플리케이션 유형을 클릭하고 애플리케이션 유형을 대화 상자 기반으로 설정한 다음 마침을 클릭합니다.

  3. 다음과 같이 IDD_AUTOPROJECT_DIALOG 대화 상자를 수정합니다.

    1. 레이블 컨트롤(IDC_STATIC) 및 취소 단추(IDCANCEL)를 제거합니다.
    2. OKbutton의 ID를 "IDRUN"으로 변경하고 캡션을 "실행"으로 변경합니다.
  4. 다음과 같이 Automation 서버의 형식 라이브러리에서 클래스 래퍼를 만듭니다.

    1. 솔루션 탐색기 자동 보호를 마우스 오른쪽 단추로 클릭한 다음 클래스 추가를 클릭합니다.

    2. Typelib에서 MFC 클래스를 클릭한 다음 열기를 클릭합니다.

    3. 레지스트리에서 클래스 추가를 클릭하고 Automation 서버에 등록된 형식 라이브러리를 찾습니다.

      이 예제에서는 Microsoft ExcelXP용 "Microsoft Excel 10.0 형식 라이브러리" 또는 Microsoft Excel 2000의 경우 "Microsoft Excel 9.0 형식 라이브러리"를 선택합니다.

    4. 목록에서 필요한 인터페이스를 선택한 다음 보다 큰 기호(>)를 클릭하여 MFC가 래퍼를 만드는 인터페이스 목록에 추가합니다. 모든 인터페이스를 추가한 경우 마침을 클릭합니다.

      이 예제에서는 _Application 인터페이스만 필요합니다.

      중요 선택한 형식 라이브러리에 인터페이스가 많은 경우 MFC가 선택한 각 인터페이스에 대해 별도의 헤더 파일을 생성하므로 사용할 인터페이스만 선택합니다. 인터페이스 선택을 최소화하면 파일 생성 및 컴파일 중에 불필요한 오버헤드를 방지할 수 있습니다.

  5. COM 서비스 라이브러리를 로드하고 CAutoProjectApp::InitInstance 함수에 사용하도록 설정하려면 다음 코드를 추가합니다.

    if(!AfxOleInit())  // Your addition starts here.
    {
      AfxMessageBox("Cannot initialize COM dll");
      return FALSE;
      // End of your addition.
    }
    
    AfxEnableControlContainer();
    
    
  6. Automation 서버의 형식 라이브러리에 있는 인터페이스에서 생성된 각 헤더 파일에 대한 include 지시문을 추가합니다. AutoProjectDlg.cpp의 맨 위에 Stdafx.h에 대한 include 문 뒤의 지시문을 추가합니다.

    이 예제에서는 _Application 인터페이스에 대해 생성된 CApplication.h 헤더 파일에 대한 포함을 추가합니다.

          #include "stdafx.h"
          #include "CApplication.h"
    
    

Microsoft Excel을 자동화하는 코드 추가

IDD_AUTOPROJECT_DIALOG 대화 상자에서 실행을 마우스 오른쪽 단추로 클릭한 다음 드롭다운 목록 상자에서 이벤트 처리기 추가를 클릭합니다. 이벤트 처리기 마법사에서 BN_CLICKED 메시지 유형을 선택한 다음 추가 및 편집을 클릭합니다. 다음 코드를 추가하여 처리기에서 Excel을 자동화합니다.

void CAutoProjectDlg::OnBnClickedRun()
{
   CApplication app;  // app is the Excel _Application object

// Start Excel and get Application object.

if(!app.CreateDispatch("Excel.Application"))
   {
      AfxMessageBox("Cannot start Excel and get Application object.");
      return;
   }
   else
   {
      //Make the application visible and give the user control of
      //Microsoft Excel.
      app.put_Visible(TRUE);
      app.put_UserControl(TRUE);
   }
} 

Automation 클라이언트 실행

F5 키를 눌러 Automation 클라이언트를 빌드하고 실행합니다. 대화 상자가 나타나면 실행을 클릭합니다. Automation 클라이언트는 Excel을 시작하고 애플리케이션을 표시합니다. 사용자가 애플리케이션을 제어할 수 있으므로 Automation 클라이언트가 종료되는 경우에도 Excel이 실행되고 있습니다.

추가 참고 사항

형식 라이브러리의 클래스를 프로젝트에 추가한 후 프로젝트의 클래스 뷰에 표시되는 것을 알 수 있습니다. 클래스 뷰에서 클래스를 두 번 클릭하여 해당 클래스의 메서드를 확인한 다음 메서드를 두 번 클릭하여 MFC 래퍼의 구현 파일에서 해당 함수의 정의를 볼 수 있습니다. 반환 형식을 확인하거나 함수 구현을 변경해야 하는 경우 멤버 함수의 정의를 검토할 수 있습니다.

이전 단계에서는 Microsoft Excel을 자동화하는 방법을 보여 주지만 동일한 아이디어를 적용하여 다른 애플리케이션을 자동화할 수 있습니다. 다음 목록에는 다른 Microsoft Office 응용 프로그램의 형식 라이브러리에 대한 파일 이름이 포함되어 있습니다.

| 애플리케이션| 형식 라이브러리| |---|---| | Microsoft Access 97| Msacc8.olb| | Microsoft Jet Database 3.5|DAO350.dll| | Microsoft Binder 97| Msbdr8.olb| | Microsoft Excel 97| Excel8.olb| | Microsoft Graph 97| Graph8.olb| | Microsoft Office 97|Mso97.dll| | Microsoft Outlook 97| Msoutl97.olb| | Microsoft PowerPoint 97| Msppt8.olb| | Microsoft Word 97| Msword8.olb| ||| | Microsoft Access 2000| Msacc9.olb| | Microsoft Jet Database 3.51|DAO360.dll| | Microsoft Binder 2000| Msbdr9.olb| | Microsoft Excel 2000| Excel9.olb| | Microsoft Graph 2000| Graph9.olb| | Microsoft Office 2000|Mso9.dll| | Microsoft Outlook 2000| Msoutl9.olb| | Microsoft PowerPoint 2000| Msppt9.olb| | Microsoft Word 2000| Msword9.olb | ||| | Microsoft Access 2002| Msacc.olb| | Microsoft Excel 2002|Excel.exe| | Microsoft Graph 2002|Graph.exe| | Microsoft Office 2002|MSO.dll| | Microsoft Outlook 2002| MSOutl.olb| | Microsoft PowerPoint 2002| MSPpt.olb| | Microsoft Word 2002| MSWord.olb| ||| | Microsoft Office Access 2003| Msacc.olb| | Microsoft Office Excel 2003|Excel.exe| | Microsoft Office Graph 2003|Graph.exe| | Microsoft Office 2003|MSO.dll| | Microsoft Office Outlook 2003| MSOutl.olb| | Microsoft Office PowerPoint 2003| MSPpt.olb| | Microsoft Office Word 2003| MSWord.olb| ||| | Microsoft Office Access 2007| Msacc.olb| | Microsoft Office Excel 2007|Excel.exe| | Microsoft Office Graph 2007|Graph.exe| | 2007 Microsoft Office|MSO.dll| | Microsoft Office Outlook 2007| MSOutl.olb| | Microsoft Office PowerPoint 2007| MSPpt.olb| | Microsoft Office Word 2007| MSWord.olb| 참고 이러한 형식 라이브러리의 기본 위치는 다음과 같습니다.

| Office 버전| 경로| |---|---| | Office 97| C:\Program Files\Microsoft Office\Office| | Office 2000| C:\Program Files\Microsoft Office\Office| | Office XP| C:\Program Files\Microsoft Office\Office10| | Office 2003| C:\Program Files\Microsoft Office\Office11| |2007 Office| C:\Program Files\Microsoft Office\Office12| Dao350.dll 및 Dao360.dll 기본 위치는 C:\Program Files\Common Files\Microsoft Shared\Dao입니다.