관리 메뉴

드럼치는 프로그래머

[API/MFC] Excel automation 2007 본문

★─Programing/☆─API | MFC

[API/MFC] Excel automation 2007

드럼치는한동이 2011. 11. 1. 10:44

// 오토메이션을 이용하여 클래스 만들기..
Class Wizard -> Automation -> Add Class ->Form a Type Libary -> 사용할 어플리케이션을 선택

 

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                Msoutl9.olb
Microsoft PowerPoint 2002             MSPpt.olb
Microsoft Word 2002                   MSWord.olb

Microsoft Office Access 2003          Msacc.olb
Microsoft Office Excel 2003           Excel.exe
Microsoft 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

뭐를 추가해야 할지 모른다면 Confirm Classes 목록에서 그냥 다 추가 ㅋㅋ

//사용할 변수들

 _Application m_oApp;             //엑셀프로그램을 띄우기위해
 _Worksheet  m_oSheet;           // 내가 사용하고자하는 단일 시트
 Worksheets  m_oSheets;          // 워크북내의 시트들
 _Workbook  m_oBook;              // 단일워크북(내가 사용하고자하는)
 Workbooks  m_oBooks;             // 프로그램의 워크북들(각 파일??)
 Range   m_oRange;                 //시트를 다루기위해 필요한....


#include <afxdisp.h>        // MFC Automation classes

// 프로그램 시작하는 곳에 추가
   

if(!AfxOleInit())  // Your addition starts here

{
    AfxMessageBox("Could not initialize COM dll");
    return FALSE;
}                 // End of your addition

AfxEnableControlContainer();

 

// 엑셀 프로그램 실행 및 핸들 가져오기??

 

 // Start Excel and get Application object...
 if(!m_oApp.CreateDispatch("Excel.Application"))
 {
  AfxMessageBox("Couldn't start Excel.");
 }
 else
 {
  //Make Excel Visible and display a message
  m_oApp.SetVisible(TRUE);
//  AfxMessageBox ("Excel is Running!");
 }

 LPDISPATCH l_lpDisp = m_oApp.GetWorkbooks();
 
 m_oBooks.AttachDispatch(l_lpDisp);

 m_oApp.SetVisible(TRUE);

 

//프로그램 실행 후 원하는 파일 열기

 COleVariant l_ValOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
 LPDISPATCH l_lpDisp;
 l_lpDisp= m_oBooks.Open(m_strPath,           // 열고자 하는 파일의 위치와 파일명
       l_ValOptional, l_ValOptional, l_ValOptional,
       l_ValOptional, l_ValOptional, l_ValOptional,
       l_ValOptional, l_ValOptional, l_ValOptional,
       l_ValOptional, l_ValOptional, l_ValOptional,
       l_ValOptional, l_ValOptional);
 ASSERT(l_lpDisp);
 m_oBook.AttachDispatch(l_lpDisp);
 ASSERT(l_lpDisp);
 l_lpDisp = m_oBook.GetSheets();
 m_oSheets.AttachDispatch(l_lpDisp);

 

 

//그외 사용법들...

//셀 범위 설정
 l_lpDisp = m_oSheet.GetRange(COleVariant("A1"),COleVariant("A1"));
 m_oRange.AttachDispatch(l_lpDisp);
//데이터 입력
 m_oRange.SetValue2(COleVariant("가나다라"));
//셀 높이 조절
 m_oRange.SetRowHeight((COleVariant)"42");
//셀 병합
 l_lpDisp = m_oSheet.GetRange(COleVariant("A1"),COleVariant("G1"));
 m_oRange.AttachDispatch(l_lpDisp);
 m_oRange.SetMergeCells((COleVariant)"TRUE");
//Get_Data
 VARIANT buf = m_oRange.GetValue2();
// CString temp = _bstr_t(buf.bstrVal).operator const char*();

// 워크북 저장
 m_oBook.Save();
//워크북 종료
 m_oBook.Close(COleVariant((short)FALSE), VOptional, VOptional);
//엑셀 종료
 m_oApp.Quit();
 

기타 오토메이션 예제

http://dreamto.egloos.com/430769


Comments