我在网上下载这段程序
----------------------
void CExceltestDlg::OnButton1()
{
// TODO: Add your control notification handler code here
_Application ExcelApp;
Workbooks wbsMyBooks;
_Workbook wbMyBook;
Worksheets wssMysheets;
_Worksheet wsMysheet;
Range rgMyRge;
//创建Excel 2000服务器(启动Excel)
if (!ExcelApp.CreateDispatch("Excel.Application",NULL))
{
AfxMessageBox("创建Excel服务失败!");
exit(1);
}
ExcelApp.SetVisible(true);
//利用模板文件建立新文档
char path[MAX_PATH];
GetCurrentDirectory(MAX_PATH,path);
CString strPath = path;
strPath += "\\template1";----------------if (!ExcelApp.CreateDispatch("Excel.Application",NULL))
{
AfxMessageBox("创建Excel服务失败!");
exit(1);
}
运行到这里程序不能正确执行,不能启动服务。求有高手帮忙分析一下有可能是什么原因!?

解决方案 »

  1.   

    在初始化的时候调用了AfxOleInit了吗?
      

  2.   

    _Application *ExcelApp = new _Application; ExcelApp->CreateDispatch("excel.application");看看这两句
      

  3.   

    我在 InitInstance()用了这句 
     if (CoInitialize(NULL)!=0)
    {
    AfxMessageBox("初始化COM 支持库失败!");
    exit(1);
    }
    就不能用AfxOleInit了吧?
      

  4.   

    我刚做了个DEMO版把我这个工程里其他的代码都去掉了,EXCEL就能正常启动了问题应该是那些代码对启动这个EXCEL服务有影响可是我找不出哪里涉及了(这个代码不能公开的,要不然我就把贴出来让大家分析了)所以各位能不能分析一下可能是什么影响了excel启动?
      

  5.   

    不,CoInitialize是初始化COM库的,还是要用AfxOleInit
      

  6.   

    AfxOleInit好像干的也是初始化COM库的事
      

  7.   

    没错,AfxOleInit它还初始化了ole库。
    另外如果你创建excel服务不是在主线程的话,初始化动作在创建excel服务的线程开始时要初始化。