질문 1.

엑셀 오토메이션을 구현하려면 TypeLib 방식으로 클래스를 추가해야 하는데,
주로 어떤 클래스들을 임포트해야 하는지 궁금합니다.
예제들에는 대략
 
CApplication : 엑셀 인스턴스를 띄우기 위한 클래스
CWorkbook : 잘 모르겠슴다.
CWorkbooks : 엑셀 파일등을 열 때 직접적으로
CWorksheet : 단일 쉬트를 다룰 때
CWorksheets : 워크북 내에 있는 쉬트들의 모음
CRange : 쉬트의 범위 선택 등을 위해

등을 임포트하던데, 위의 것 말고도 주로 사용하는 클래스들이 있으면 좀 말씀해 주시면 감사하겠습니다.

답변 :
네.... 거의 그걸로 기본 구현은 가능합니다.
추가적으로 Font등을 넣어서 구현하면 색깔을 입힐수 있겠죠.

질문 2.

대충 CApplication 으로 엑셀을 띄우고,
CWorksheets 객체를 CApplication 객체로부터 얻어낸 다음,
CWorksheets 객체를 이용하여 파일을 열고,
CWorksheets 객체를 이용하여 CWorksheet 객체를 얻어낸 후,
CRange 객체 등으로 CWorksheet 객체에서 필요한 작업을 하는 거
라고 알고 있습니다. 맞나요?

답변 :

아래 샘플소스를 붙입니다. 보시면 순서를 아실수 있으실 겁니다.
VBA 프로그래밍을 하셨다면 좀 더 쉽게 이해가 가실 겁입니다.
( Application > Workbook > WorkSheet > Range : 범위가 큰것부터 낮으순으로 이해하시면 됩니다.)
( 참고로 아래 예는 VC6.0에 오피스XP대상입니다.
음 뭐 클래스및 인터페이스명이 틀리지만 유사해서 검토해보시면 금방 적용하실수 있을듯 합니다)
 

    (샘플)

    _Application objApp;
    Workbooks objWkbooks;
    _Workbook objWkbook;
    _Worksheet objWksheet;
    Worksheets objWksheets;
    Range objRange;
    Range objCols;

    Font objFont;

   ---------------------------------
   중  략
   ---------------------------------

    try
    {
        COleVariant VTrue((short)TRUE), VFalse((short)FALSE);
        COleVariant VOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);

        _variant_t viColHeader;
        _variant_t vstrColName;    

         // 엑셀 시작 및 애플리케이션 객체 얻기

        if(!objApp.CreateDispatch("Excel.Application"))
        {
            AfxMessageBox("Couldn't start Excel.");
        }
        else
        {
            objWkbooks = objApp.GetWorkbooks();
            objWkbook = objWkbooks.Add(VOptional) ;
            objWksheets = objWkbook.GetSheets();
            objWksheet = objWksheets.GetItem(COleVariant ((short)1));

질문 3.

여기서 CWorkbook 과 CWorkbooks 와의 기능상 차이점이 무엇인가요?
 
위의 소스를 보시면 두개의 기능상 차이점이 있죠?
음 엑셀을 실행시키시려면 보통 위의 방법대로,
워크시트 객체를 얻어오기 때문에 순서를 지키셔야 하구요..

Workbooks는 Workbook 개체보다 상의 개념 입니다.

워크북 복수개에서 한개 뽑아서 워크북아래 자식 개념인 워크 쉬트들을 핸들링한다고 간략히 이해하시면, 편할것 같네요.

출처 : 약육강식 블로그
이올린에 북마크하기(0) 이올린에 추천하기(0)
TRACKBACK 0 AND COMMENT 3

TRACKBACK http://kkommy.com/trackback/1170256013

  1. BlogIcon 이지스 2007/03/27 17:00 address edit/delete reply

    MFC같은데, 맞나요? 요즘 전 Visual Studio를 멀리한지 꽤(?)되어서요.. ㅡㅡ;

    • BlogIcon kkommy 2007/03/27 17:31 address edit/delete

      MFC 맞습니다.. ^^
      아직도 Visual Studio를 사용하고 있는지라.. ^^;

  2. 2007/08/13 20:51 address edit/delete reply

    비밀댓글 입니다