首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

制作操作EXCELDLL调用为什么创建对象出错.解决方案

2012-03-07 
制作操作EXCELDLL调用为什么创建对象出错.//打开EXCEL数据文件STDMETHODIMPCExcelUser::Open(BSTRFileName

制作操作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

热点排行