카테고리

  • 안드로이드
  • IOS
  • MFC
  • JAVA
  • AWS
  • LAMP
  • 여행&사진
  • 이런저런생활
  • 2016년 2월 15일 월요일

    [MFC] 엑셀 오토메이션 틀 고정 소스

    엑셀 오토메이션을 이용하여 틀을 고정하기 위한 소스 코드
    window클래스 추가가 필요(엑셀 라이브러리에 window클래스가 있음)

    #include "window0.h"

    CApplication App;
    CWorkbooks Workbooks = App.get_Workbooks();

    COleVariant varNull(DISP_E_PARAMNOTFOUND, VT_ERROR);

    //** 파일 접근
    CWorkbok Workbook = Workbooks.Open(_T("C:\\Test.xlsx"),
    varNull,varNull,varNull,varNull,varNull,varNull,varNull,varNull,varNull,varNull,varNull,varNull,varNull,varNull);

    //** 시트 취득
    CWorksheets Worksheets = Workbook.get_Worksheets();
    CWorksheet Worksheet = Workseets.get_Item(COleVariant((long)1));

    CRange m_Cells = Worksheet.get_Cells();
    //** 4행 1열(A4)의 셀을 취득
    CRange m_CellSet = m_Cells.get_Item(COleVariant((long)4), COleVariant((long)1)).pdispVal;

    CWindow wnd;
    LPDISPATCH lpdisp = App.get_ActiveWindow();
    wnd.AttachDispatch(lpdisp, true);

    //** 4행 1열(A4)의 셀을 선택
    m_CellSet.Select();
    //** 틀 고정 함수
    wnd.put_FreezePanes(TRUE);


    인터넷에서 찾다보면 GetWindows()나 GetActiveWindow()함수로 나오는데
    실제로 함수를 찾아보면 get_ActiveWindow()함수 밖에 없다.
    그리고 반환값도 다르다.
    언젠가부터 반환값이 LPDISPATCH형으로 반환되었고(정확이 언제부터인지 모름)
    해당 반환값(LPDISPATCH형)을 AttachDispath함수를 써서 넣어주면 된다.

    내가 못찾는건지 없는건지 모르겠는데
    MSDN에서도 설명이 예전방식밖에 없음.

    댓글 없음 :

    댓글 쓰기