|
대마두 님이 쓰신 글 :
: //---------------------------------------------------------------------------
: if (!DirectoryExists(PATH+"EXCEL")) CreateDir(PATH+"EXCEL");
: Variant excel_app;
: Variant excel_book;
: Variant excel_sheet;
: Variant cells;
:
: String asFileName=PATH+"prototype_export.xls";
: String asFileName_1;
:
: excel_app=Variant::CreateObject("excel.application");
: -> excel_app.OlePropertySet("Visible", (Variant)true);
: excel_app.OlePropertyGet("WorkBooks").OleProcedure("Open",asFileName.c_str());
: excel_book=excel_app.OlePropertyGet("ActiveWorkbook");
: excel_sheet=excel_book.OlePropertyGet("ActiveSheet");
: //---------------------------------------------------------------------------
: 빌더 2007에서 ole컨트롤을 이용하여 엑세스에 저장된 데이터를 엑셀로 임포트 하는 프로그램의 일부분입니다.
:
: 테스트용 단독 프로젝트에서 하는경우 별 문제없이 임포트 되는데요.
:
: 실제 적용해야할 프로그램에 같은 소스를 붙여 놓는 경우 위에 화살표 된 부분에서 Access Violation을 냅니다.
:
: 이상해서 에러내는 부분을 주석 처리하고 실행을 하니 그 바로 다음줄 파일을 여는 부분에서 똑같은 Access Violation을 냅니다.
:
: 질문을 검색하니 답변으로 엑셀 컴포넌트를 이용하여 작성하라는 답만 나오는데 문제점은 빌더 2007은 엑셀컴포넌트가 없네요...
:
: 해외에서도 비슷한 문제를 겪은 사람이 많은듯 한데 질문에 대한 답변이 제대로 되어있는경우를 못찾았습니다.
:
: 혹시 위문제에 대해서 아시는 내용 있으시면 좀 알려주세요 ㅜㅜ
문제의 원인에 어느정도 접근은 했는데 솔루션을 모르겠네요
적용한 프로젝트에 ActiveX를 Import한 컴포넌트를 사용하는데 그 컴포넌트를 삭제한 경우 동작을 하네요.
아마도 VC++과 Builder 간의 Variant 자료형의 크기의 차이 때문에 메쏘드를 불러오면서 에러를 띄우는 것 같은데... 알아도 해결방법을 잘 모르겠네요...
위 문제에 대해 아시는분 좀 있으시면 답변 부탁드립니다.
|