링크 : http://www.viva64.com/en/b/0169/

 

저작자 표시 비영리 변경 금지
신고
posted by 뚱2
Visual Studio 2008 MFC 프로그램에서 Excel Automation을 사용(Add Class From Typelib)할려고 디폴트로 사용할려고 하니

알수 없는 에러가 발생했다.





#해결1
http://www.ms-news.net/f3295/ms-office-type-library-problem-2533193.html

참조 : http://support.microsoft.com/kb/308292 
         http://support.microsoft.com/kb/311407/EN-US 


#해결2
에러는 해결했는데 Warning이 발생한것도 있고 Typelib를 이용해서 클래스 만들어주는게 다 만들어주는것도 아니고해서
결국직접 typelib를 임포트 해서 스마트포인터를 사용해서 해결했다.
#import "C:\\Program Files (x86)\\Common Files\\Microsoft Shared\\OFFICE11\\MOS.DLL" \
    rename("RGB", "excelRGB")
#import "C:\\Program Files (x86)\\Common Files\\Microsoft Shared\\VBA\\VBA6\\VBE6EXT.OLB"
#import "C:\\Program Files (x86)\\Microsoft Office\\OFFICE11\\excel.exe" \
    rename("DialogBox", "excelDialogBox") \
    rename("RGB", "excelRGB") \
    rename("CopyFile", "excelCopyFile") \
    no_dual_interface
using namespace Excel;

* office11은 MS Office 2003 버전이다.
* 32bit 버전이라면 'Program Files (x86)'이 아니라 'Program Files' 이다.

     
저작자 표시
신고
posted by 뚱2

ADO를 이용해서 Recordset 개체를

Open하는데 두번째 인자(ActiveConnection)는 옵션인자입니다.

'Visual Basic
recordset.Open Source, ActiveConnection, CursorType, LockType, Options



이걸 그냥 NULL 이렇게 주면은 실행시 예외를 떨굽니다.
이럴떼 NULL 대신
// Visual C++
_variant_t vOPTION;
vOPTION.vt = VT_ERROR;
vOPTION.scode = DISP_E_PARAMNOTFOUND;


해주시면 됩니다.

p.s. 2011-08-06 추가
MFC에서 컴관련 클래스로 COleVariant가 있습니다.
COleVariant vOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
 
저작자 표시
신고
posted by 뚱2