读书人

制作操作EXCELDLL调用为什么创建对象出

发布时间: 2012-03-07 09:13:51 作者: rapoo

制作操作EXCELDLL调用为什么创建对象出错.
//打开EXCEL数据文件
STDMETHODIMP CExcelUser::Open(BSTR FileName, BSTR SheetName, int *Ret)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState())

// TODO: Add your implementation code here
//判断FileName,SheetName是否正确
CString _FileName,_SheetName;
_FileName=FileName;
_SheetName=SheetName;
if (_FileName.IsEmpty() || _FileName.IsEmpty()){
*Ret=2;
return S_OK;
}

try{
COleVariant
covTrue((short)TRUE),
covFalse((short)FALSE),
covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);

if (!ExcelApp.CreateDispatch( "Excel.Application "))
{
*Ret=1;//在这里返回了.
return S_OK;
}

wbsMyBooks.AttachDispatch(ExcelApp.GetWorkbooks(),true);
lpDisp=wbsMyBooks.Open(_FileName,covOptional,covOptional,covOptional,covOptional,
covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional);
wbMyBook.AttachDispatch(lpDisp);
wssMysheets.AttachDispatch(wbMyBook.GetWorksheets(),true);
wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t(_SheetName)),true);
IsOpenExcel=true;
*Ret=0;
}catch(...){
*Ret=3;
return S_OK;
}
*Ret=0;
return S_OK;
}
我用应用程序做调试都OK.但是封装成DLL就创建出错.为什么.要注意什么吗?请教

[解决办法]
那定义一个

COleException *e = new COleException;

CreateDispath返回0后, 看看这个e中的错误原因是什么?

例子可见:http://msdn2.microsoft.com/en-us/library/6khfastx(VS.80).aspx

读书人网 >VC/MFC

热点推荐