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에서도 설명이 예전방식밖에 없음.
댓글 없음 :
댓글 쓰기