VC++-ADO/COM组件创建Excel服务失败

问题描述

这个问题我印象中我两年前就遇到了,当时我做了一个控制台程序,读写EXCEL。

写好了,一执行就出现这个报错,也找不到什么问题,后来问了我的开发老师苏工。

他一语就点破了问题,COM没初始化!

CoInitialize(NULL);

就这么一句代码没加。

今天,时隔多年,我今天在开发一个MFC的程序,默认状态执行程序,初始化弹出对话框,在点OK。

可以正常读写EXCEL,但是当把OK的函数加到初始化界面那里,就报错这个问题了。

我还是找了半天没找到问题,后来还是问了开发老师苏工,他点醒我的。

这个问题还是两年前遗留下来的问题,当时我发现问题后,并没有把初始化的代码 加到我封装好的SDK中,

所以导致我今天继续用以前的SDK就出现了当年的问题。

现在要写个博客记录下这个问题,免得以后再次遇到又不知道。

问题演示

解决后演示

在我自己封装的SDK里,加了一个初始化COM的函数

// 初始化Excel OLE
BOOL ExcelApi::InitExcel()
{
    // 初始化COM库
    CoInitialize(NULL);
    // 初始化Excel
    if (!ExcelApp.CreateDispatch("Excel.Application"))
    {
        AfxMessageBox("创建Excel服务失败!");
    }
    ExcelApp.put_DisplayAlerts(FALSE);       // 屏蔽警告
    return TRUE;
}

每次打开EXCEL前。先调一下初始化。

SDK下载https://www.cnblogs.com/nxopen2018/p/11055161.html

Caesar卢尚宇

2021年2月22日

作者: 阿飞

出处: https://www.cnblogs.com/nxopen2018/>

关于作者:......

如有问题, 可在底部(留言)咨询.

原文地址:https://www.cnblogs.com/nxopen2018/p/14432396.html