|
박성찬 님이 쓰신 글 :
: 아래와 같이 엑셀을 파일을 열고자 하는데
: OLECHECK를 하면서 에러가 발생합니다.
: 무엇이 문제인가요?
:
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
: ExcelApplication1->Connect();
: ExcelApplication1->set_Visible(TDefLCID(),true);
: ExcelApplication1->set_DisplayAlerts(TDefLCID(), true);
: ExcelWorkbook1->ConnectTo(ExcelApplication1->Workbooks->Open((wchar_t *)"test.xls"));
: //ExcelWorksheet1->ConnectTo(ExcelApplication1->Worksheets->get_Item((TVariant)1)); //1번째 시트설정
: //ExcelApplication1->Disconnect();
: //ExcelApplication1->Quit();
: }
:
: 에러가 나는 부분을 찾아보니 Excel_2k.h의 아래부분에서 발생합니다.
: Excel_2k::ExcelWorkbook* __fastcall Open(BSTR Filename/*[in]*/,
: VARIANT UpdateLinks/*[in,opt]*/= TNoParam(),
: VARIANT ReadOnly/*[in,opt]*/= TNoParam(),
: VARIANT Format/*[in,opt]*/= TNoParam(),
: VARIANT Password/*[in,opt]*/= TNoParam(),
: VARIANT WriteResPassword/*[in,opt]*/= TNoParam(),
: VARIANT IgnoreReadOnlyRecommended/*[in,opt]*/= TNoParam(),
: VARIANT Origin/*[in,opt]*/= TNoParam(),
: VARIANT Delimiter/*[in,opt]*/= TNoParam(),
: VARIANT Editable/*[in,opt]*/= TNoParam(),
: VARIANT Notify/*[in,opt]*/= TNoParam(),
: VARIANT Converter/*[in,opt]*/= TNoParam(),
: VARIANT AddToMru/*[in,opt]*/= TNoParam(),
: long lcid/*[in]*/= TDefLCID())
: {
: Excel_2k::ExcelWorkbook* RHS;
: OLECHECK(this->Open(Filename, UpdateLinks, ReadOnly, Format, Password, WriteResPassword,
: IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter,
: AddToMru, lcid, (Excel_2k::ExcelWorkbook**)&RHS));
: return RHS;
: }
문제의 원인을 찾았습니다.
Open할 때 FileName의 데이터타입 및 경로가 문제였습니다.
아래와 같이 수정하니까 잘 동작합니다.
WideString path = "C:\\Program Files\\Borland\\CBuilder6\\Projects\\test.xls";
ExcelApplication1->Connect();
ExcelApplication1->set_Visible(TDefLCID(),true);
ExcelApplication1->set_DisplayAlerts(TDefLCID(), true);
ExcelWorkbook1->ConnectTo(ExcelApplication1->Workbooks->Open(path));
|