问题描述
这个问题我印象中我两年前就遇到了,当时我做了一个控制台程序,读写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日